十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关Android如何实现类似iOS风格的对话框,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站设计、鲁甸网络推广、小程序定制开发、鲁甸网络营销、鲁甸企业策划、鲁甸品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供鲁甸建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
分享一个简单的常用的对话框类,按照国际惯例,先上图
布局简单,先上布局。一个标题,一个内容,两个按钮
接着就是自定义类!
首先,新建类继承Dialog
public class CommonDialog extends Dialog
接着是构造函数,在构造函数中定义样式
public CommonDialog(@NonNull Context context) { super(context, R.style.dialog_Common); mContext = context; setContentView(R.layout.dialog_common); ButterKnife.bind(this); }
其中,在style中定义对话框属性
紧接着,提供四个变量来存储设置的标题、内容以及两个按钮的文字
private String title; private String content; private String cancel; private String ensure;
现在需要提供能够设置标题、内容以及两个按钮的文字的方法
/* * 设置标题 默认没有标题 * * @param title */ public void setTitle(String title) { this.title = title; } /** * 设置内容 默认为空 * * @param content */ public void setContent(String content) { this.content = content; } /** * 设置确定按钮内容 默认为确定 * * @param ensure */ public void setEnsure(String ensure) { this.ensure = ensure; } /** * 设置取消按钮内容 默认为取消 * * @param cancel */ public void setCancel(String cancel) { this.cancel = cancel; }
现在,处理按钮的点击事件
/** * 确定按钮事件监听 默认是dismiss对话框 * * @param onEnsureClickListener */ public void setOnEnsureClickListener(View.OnClickListener onEnsureClickListener) { this.onEnsureClickListener = onEnsureClickListener; } /** * 取消按钮事件监听 默认是dismiss对话框 * * @param onCabcelClickListener */ public void setOnCancelClickListener(View.OnClickListener onCabcelClickListener) { this.onCancelClickListener = onCabcelClickListener; }
默认的是点击对话框消失
/** * 默认点击事件,点击弹框消失 */ private View.OnClickListener onClickListenerDismiss = new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } };
最后,重写父类的show方法,将展示之前设置的各种信息
/** * 重写show方法 */ @Override public void show() { if (TextUtils.isEmpty(title)) { //默认没有标题 dialogTitle.setVisibility(View.GONE); } else { //默认不设置内容,则内容太为空 dialogTitle.setVisibility(View.VISIBLE); setTextViewTxt(dialogTitle, title); } if (TextUtils.isEmpty(cancel)) { //默认取消按钮文字为"取消" cancel = mContext.getString(R.string.cancel); } if (TextUtils.isEmpty(ensure)) { //默认确认按钮文字为"确认" ensure = mContext.getString(R.string.ensure); } //设置文字信息 setTextViewTxt(dialogContent, content); setTextViewTxt(dialogCancel, cancel); setTextViewTxt(dialogEnsure, ensure); //设置点击事件 setButtonOnClickListener(dialogCancel, onCancelClickListener); setButtonOnClickListener(dialogEnsure, onEnsureClickListener); super.show(); }
最最后,献上在Activity中如何使用该对话框的方法的代码
public class MainActivity extends AppCompatActivity { @BindView(R.id.btn_demo_haveTitle) Button btnDemoHaveTitle; @BindView(R.id.btn_demo_noTitle) Button btnDemoNoTitle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.btn_demo_haveTitle, R.id.btn_demo_noTitle}) public void onClick(View view) { switch (view.getId()) { //没有标题的对话框 case R.id.btn_demo_haveTitle: final CommonDialog dialog1 = new CommonDialog(this); dialog1.setTitle("提示"); dialog1.setContent("是否确认退出?"); dialog1.setOnEnsureClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"点击了确认",Toast.LENGTH_SHORT).show(); // TODO: 2017/9/17 这里写你的代码 dialog1.dismiss(); } }); dialog1.show(); break; //有标题的对话框 case R.id.btn_demo_noTitle: final CommonDialog dialog2 = new CommonDialog(this); //不设置标题默认没有标题 dialog2.setContent("是否确认退出?"); dialog2.setOnEnsureClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"点击了确认",Toast.LENGTH_SHORT).show(); // TODO: 2017/9/17 这里写你的代码 dialog2.dismiss(); } }); dialog2.show(); break; } } }
关于“Android如何实现类似iOS风格的对话框”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。