目录
一、自定义Dialog
二、Dialog添加圆角
自定义Dialog实现过程
本文的自定义dialog是在fragment中实现的,在Activity里面应该大同小异了。
android studio其实自带了很多种dialog
下面这个图是引用一位大佬的!
这几天在学习自定义的Dialog的使用,一开始以为很难,因为没有接触过,虽然自己使用过AlertDialog和ProgressDialog,但是图中的一些东西我并不知道是可以用自定义Dialog实现的。
好伐啦,接下来就开始介绍Dialog的自定义使用吧!
首先,准备好自定义布局:
比如说,我需要一个这样的东西:点击某处出现一个列表供你选择,比如拍照、相册和取消。
自定义,那肯定是需要自己准备布局文件的啦!
xml文件如下:
简简单单的一个线性布局+三个按钮
其次,就是使用Dialog。
private Dialog dialogPhoto;引入布局 R.layout.dialog_photo_select即xml文件 第二个参数和第三个参数填false就行。 View photoView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_photo_select,null,false); 最重要的一点:控件的绑定 因为后面需要实现弹出来的dialog的点击事件,那么就需要绑定控件,而绑定控件时要注意下面红色处代码。takePhoto = (Button) photoView.findViewById(R.id.take_photo_btn); fromPhoto = (Button) photoView.findViewById(R.id.select_photo_btn); backPhoto = (Button) photoView.findViewById(R.id.getOut);dialogPhoto = new AlertDialog.Builder(getContext()).setView(photoView).create(); dialogPhoto.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设置dialog背景透明 dialogPhoto.setCancelable(false);//点击dialog其他地方不能取消dialog dialogPhoto.getWindow().setLayout(getResources().getDisplayMetrics().widthPixels * 3/4, LinearLayout.LayoutParams.WRAP_CONTENT);//设置对话框大小
最后,Dialog的点击事件。
既然你已经可以实现点击某处弹出一个Dialog出来,那么你肯定是需要对这个做一些处理的,即对上面的三个按钮实现点击事件。
backPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialogPhoto.dismiss(); } });另外两个按钮不多说了,举一反三。
实现效果图
如何自定义dialog圆角呢,上面的图片看不出效果也没有设置圆角,因为只有三个按钮,下面将会有不设置和设置圆角以后的效果图。
首先新建drawable文件
drawable/bg_dialog_transfer(名字你自己随意)
然后就是去你自定义dialog的布局文件里面去引用上面这个文件
这一步设置了以后,千万千万注意要设置自定义的dialog的背景为透明的,否则圆角效果不会出现
代码中的dialog填你自己的自定义dialog名字即可。
Window window = dialogName.getWindow();
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
设置完成看看效果图!
未设置圆角时
设置圆角后
是不是美观多了
文章也借鉴了另外一位大佬的相关内容,当然我也是从他这里偷学的!
圆角借鉴
继续加油,每天多学习一点,多进步一点。