这篇文章主要为大家详细介绍了机器人自定义对话实现通用圆角对话框,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
前言:圆角对话框在项目中用的越来越多,之前一篇文章有介绍过使用系统的警报对话框卡片视图(安卓中使用卡片视图实现圆角对话框)实现了圆角对话框的样式,今天介绍自定义对话实现通用的圆角对话框。
效果图:
1.继承自AlertDialog,重写onCreat
/**
*由ruancw于2018/6/7创建。
* 自定义的带圆角的对话框
*/
公共类圆角对话框扩展了警报对话框{
私有文本视图电视标题
私有TextView tvDes
私有TextView电视取消
私有TextView电视确认
//私有上下文语境;
/**
* 一个参数的构造方法
* @param上下文上下文对象
*/
公共圆角对话框(@非空上下文上下文){
超级(上下文);
//这个。上下文=语境;
}
@覆盖
受保护的void onCreate(Bundle saved instancestate){
超级棒。oncreate(savedInstanceState);
setContentView(r . layout。对话框_布局_测试);
//设置背景透明,不然会出现白色直角问题
窗户窗口=getWindow();
窗户。setbackgrounddrawable(新颜色drawable(颜色.透明));
setCanceledOnTouchOutside(false);
//初始化布局控件
init view();
//确定和取消按钮的事件监听
init事件();
//设置参数必须在显示之后,不然没有效果
窗口管理器LayoutParams params=getWindow().getAttributes();
getWindow().设置属性(参数);
}
}
注:解决白色直角的问题
(1)文中没有使用风格设置背景透明,直接在代码中用的window.setBackgroundDrawable设置的背景透明,不然会出现遗留的四个角有白色直角的问题。
(2)当然也可以在构造方法中这样设置:super(context,R.style.CustomDialog)。
2.初始化布局
(1)布局文件(CradView实现圆角布局)
安卓。支持。V7。小部件。查看卡片
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
xmlns:app=' http://模式。安卓。' com/apk/RES-auto '
Android:layout _ width=' match _ parent '
Android:layout _ height=' wrap _ content '
Android:layout _ margin=' @ dimen/DP _ 30 '
app:cardCornerRadius=' @ dimen/DP _ 10 '
线性布局
Android:layout _ width=' match _ parent '
Android:layout _ height=' wrap _ content '
Android:background=' @ color/BG _ main white '
安卓:方向='垂直'
文本视图
android:id='@ id/tv_title '
Android:layout _ width=' match _ parent '
Android:layout _ height=' wrap _ content '
安卓:重力='中心'
android:padding='@dimen/dp_10 '
android:text='温馨提示'
Android:text color=' @ color/BG _ main white '
Android:textSize=' @ dimen/sp _ 18 '/
视角
Android:layout _ width=' match _ parent '
android:layout_height='1dp '
Android:background=' @ color/BG _ line '/
文本视图
android:id='@ id/tv_des '
Android:layout _ width=' match _ parent '
Android:layout _ height=' wrap _ content '
android:padding='@dimen/dp_20 '
Android:textSize=' @ dimen/sp _ 18 '/
视角
Android:layout _ width=' match _ parent '
android:layout_height='1dp '
Android:background=' @ color/BG _ line '/
线性布局
Android:layout _ width=' match _ parent '
Android:layout _ height=' @ dimen/DP _ 48 '
安卓:方向='水平'
文本视图
android:id='@ id/tv_cancel '
android:layout_width='0dp '
Android:layout _ height=' match _ parent '
android:layout_weight='1.0 '
安卓:重力='中心'
android:text='取消'
Android:textSize=' @ dimen/sp _ 16 '/
视角
android:layout_width='1dp '
Android:layout _ height=' match _ parent '
Android:background=' @ color/BG _ line '/
文本视图
android:id='@ id/tv_confirm '
android:layout_width='0dp '
Android:layout _ height=' match _ parent '
android:layout_weight='1.0 '
安卓系统:重力='中心'
安卓系统:文本='确定'我不知道
安卓系统:文本大小='@dimen/sp_16' /
/线性布局
/线性布局
/安卓。支持。V7。小部件。卡片视图
(2)初始化布局文件及设置参数
/**
*初始化布局文件及设置参数
*/
私有void初始化视图()>
//对话框标题
tvtitle=findviewbyid(r . id。TV _ title);
//对话框描述信息
tvdes=findviewbyid(r . id。TV _ des);
//确定按钮和取消
tvconfirm=findviewbyid(r . id。TV _确认);
tvcancel=findviewbyid(r . id。TV _取消);
}
(3)设置事件监听
让自定义的对话方块实现onclick侦听器接口,然后设置确定及取消按钮的事件监听
/**
*确定及取消点击事件
*/
私有void初始化事件()>
电视确认。setnccklistener(this);//确定
电视取消。setnccklistener(this);//取消@覆盖
公共see onclick(查看)
交换机(view.getId()))
电视_确认案例:
disiss();
打断;打断;
案例电视_取消:
disiss();
打断;打断;
}
}
写到这里,圆角对话框就实现了,但如果另一个页面要求不同背景色,按钮的文本也不是""确定""和""取消""呢,我们是不是又的重写定义对话方块和设置布局文件呢,显然这样很麻烦,貌似与我们的标题写的通用的圆角对话框也不相符啊,这似乎不太好吧。接下来,我们进行一番改造,打造通用的圆角对话框。
3.打造通用圆角对话框美元
(1)初始化视图中设置初始参数
私有字符串title='温馨提示、消息、确认文本='确定cancelText='取消";
//默认的标题栏背景色
private int title color=color。解析颜色(# ff 8200);
//默认的确定和取消按钮背景色
私有int确认颜色BG=颜色。解析颜色(# F8 F8 F8 ");
private int cancelcolorbg=color。解析颜色(# F8 F8 F8 ");
/**
*初始化布局文件及设置参数
*/
私有void初始化视图()>
//对话框标题
tvtitle=findviewbyid(r . id。TV _ title);
//对话框描述信息
tvdes=findviewbyid(r . id。TV _ des);
//确定按钮和取消
tvconfirm=findviewbyid(r . id。TV _确认);
tvcancel=findviewbyid(r . id。TV _取消);
[原件:西班牙文]通用设置-好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧,好吧。
//设置标题~我爱你~描述及确定按钮的文本内容
tvTitle.setText(title):
tvDes.setText(消息):
tvConfirm.setText(确认文本);
//设置标题栏及确定~我爱你~取消按钮背景色
tvtitle。设置背景颜色(标题颜色BG):
tvConfirm.setBackgroundColor(确认ColorBg):
电视取消。设置背景色(cancelcolorbg);
}
(2)定义设置属性方法
/**
*设置标题栏文本
* @param标题标题
*/
公共see setttitle(字符串标题)>
此。标题=标题
}
/**
*设置描述信息
* @param消息描述信息
*/
公共void setMessage
此。消息=消息
}
/**
*设置确定按钮上的文本
* @param确认文本文本
*/
public void setconf文本(字符串确认文本)>
这个。确认文本=确认文本
}
/**
*设置取消按钮上的文本
* @param cancelText文本
*/
公共see setancestortext(字符串取消文本)>
这个。canceltext=取消文本
}
/**
*设置标题栏的背景
* @param titleColorBg背景色内部的
*/
公共查看settitlebbg(int title rbg)}
这。标题色BG=标题色BG;
}
/**
*确定按钮背景色
* @param确认内部颜色背景色
*/
public see setconf BG(int confirmcolorbg)}
这个。confirmcolorbg=confirmcolorbg
}
/**
*取消按钮背景色
* @param cancelColorBg int背景色
*/
公众的查看setancelbg(int cancelcolorbg)}
这个。cancelcolorbg=cancelcolorbg
}
(3)定义接口,实现确定按钮的点击回调
专用确认监听器确认监听器:
/**
*设置确定按钮的监听
* @param确认监听器
*/
公众的查看setconf侦听器.]
这个。confirm listener=confirm listener;
}
/**
*确定按钮点击的监听接口
*/
公用接口确认监听器[
请参阅onconofirclick();
}
点击""确定""回调方法
电视_确认案例:
/* * * * * * * * * * * * *通用设置* * * * * * * * * * * *。
//点击确定按钮回拨
confirm listener . onconfirm click();
dissolve();
打破;
一般点击“取消”按钮除了关闭当前弹出的对话框之外不做任何事情,所以点击这里后没有回调。当然,你也应该在点击“确定”并执行相关操作后关闭当前对话框。
4.使用
RoundCornerDialog RoundCornerDialog=new RoundCornerDialog(m context);
//设置标题、描述、文本等参数
RoundCornerDialog.setTitle('温馨提示');
RoundCornerDialog.setMessage('您将在注销当前登录后再次登录!');
Rounderdialog.setConfirmText('确认退出');
//确定按钮的点击回调方法。
roundCornerDialog . setconfirmlistener(新的roundCornerDialog。ConfirmListener() {
@覆盖
public void onConfirmClick() {
Intent Intent=new Intent(m context,loginactivity . class);
startActivity(意图);
UIUtil.toast('退出成功,请重新登录');
getActivity()。finish();
}
});
//显示对话框
roundcornerdialog . show();
总结:本文中通用的圆角对话框效果是通过自定义对话框CardView实现的,使用起来比较简单。测试中发现,当标题栏背景色设置在Android5.0以下时,标题栏不会跟随CardView的圆角。
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。