Android自定义控件实现万能的对话框

发布时间 - 2026-01-11 00:12:26    点击率:

自定义控件有段时间没更新了,今天给大家带来一个新的对话框样式,本着用更少的代码实现更丰富的功能。

由于对话框对用户的操作有影响,所以目前app上的对话框用的已经比较少了,但还是有一些比较重要的信息提示需要使用对话框的样式,例如版本更新,账户异地登陆等。
下面来看自定义对话框的样式:

图1:自定义提示对话框

图2:自定义警告对话框

图3:默认提示对话框

图4:默认警告对话框

这里面带来了两种对话框的样式,也是比较常见的。以上所有的背景颜色,文字颜色,以及按钮的点击效果都是可以自定义的。

下面分别看看四种对话框是如何实现的
图1:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
    .setTitle("发现新版本V5.4.1")
    .setContent("Version5.4.1\n【更新默认表情】——同步最新表情,聊天更有趣\n" +
        "【资料卡大升级】——全新视觉设计,增加陌生人来源信息\n" +
        "【消息跳动优化】——鼠标悬浮在消息列表上时顺序不动,再也不怕点错啦\n" +
        "【收藏预览升级】——完善图片浏览体验,优化网页预览效果\n" +
        "【更多体验优化】——群成员列表宽度可调;优化天气定位策略;优化图片查看器")
    .setStyle(DialogM.STYLE_TIP)
    .setPositiveButton("更新", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(DialogMActivity.this, "submit", Toast.LENGTH_SHORT).show();
        dialog.dismiss();
      }
    })
    .setNegativeButton("取消", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(DialogMActivity.this, "cancel", Toast.LENGTH_SHORT).show();
        dialog.dismiss();
      }
    });
builder.create().show();

图2:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
    .setTitle("Hello")
    .setTitleBackColor(getResources().getColor(R.color.content))
    .setTitleTextColor(getResources().getColor(R.color.mainColor))
    .setAlertButtonBackColor(getResources().getColor(R.color.mainColor))
    .setAlertButtonTextColor(getResources().getColor(android.R.color.white))
    .setCanceledOnTouchOutside(false)
    .setAlertButton("确定", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
      }
    })
    .setContent("landptf");
builder.create().show();

图3:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
    .setContent("landptf")
    .setStyle(DialogM.STYLE_TIP)
    .setPositiveButton("submit", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(DialogMActivity.this, "submit", Toast.LENGTH_SHORT).show();
        dialog.dismiss();
      }
    })
    .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(DialogMActivity.this, "cancel", Toast.LENGTH_SHORT).show();
        dialog.dismiss();
      }
    });
builder.create().show();

图4:

DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
    .setAlertButton("", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
      }
    })
    .setContent("landptf");
builder.create().show();

图3与图4完全使用了默认的颜色,我在代码里指定了红色为主色调。

所有的操作都是通过链式调用,可以根据自己app的风格随意改变颜色。当然了你也可以把代码下载下来增加更丰富的功能。

源码比较长,有兴趣的童鞋可以点击这里查看。
源码中采用了建造者模式,可以方便链式调用,使代码看起来更简洁。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 对话框  # Android中自定义对话框(Dialog)的实例代码  # Android中制作自定义dialog对话框的实例分享  # Android实现自定义圆角对话框Dialog的示例代码  # Android自定义等待对话框  # Android对话框自定义标题 对话框标题美化操作  # Android自定义对话框Dialog  # Android如何自定义升级对话框示例详解  # 自定义  # 链式  # 都是  # 可调  # 我在  # 是有  # 鼠标  # 两种  # 点击这里  # 带来了  # 不动  # 采用了  # 给大家  # 少了  # 有兴趣  # 四种  # 可以根据  # 这里面  # 你也可以 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 音响网站制作视频教程,隆霸音响官方网站?  深圳网站制作培训,深圳哪些招聘网站比较好?  java ZXing生成二维码及条码实例分享  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  如何在云主机快速搭建网站站点?  如何用IIS7快速搭建并优化网站站点?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  详解阿里云nginx服务器多站点的配置  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  网站制作企业,网站的banner和导航栏是指什么?  如何在云指建站中生成FTP站点?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  iOS验证手机号的正则表达式  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Python面向对象测试方法_mock解析【教程】  Python数据仓库与ETL构建实战_Airflow调度流程详解  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何用美橙互联一键搭建多站合一网站?  如何在万网自助建站中设置域名及备案?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  如何在阿里云购买域名并搭建网站?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  HTML 中动态设置元素 name 属性的正确语法详解  如何在腾讯云服务器上快速搭建个人网站?  EditPlus中的正则表达式 实战(2)  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  网站建设保证美观性,需要考虑的几点问题!  如何在建站宝盒中设置产品搜索功能?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  ,怎么在广州志愿者网站注册?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  ,南京靠谱的征婚网站?  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何在建站之星网店版论坛获取技术支持?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  实例解析angularjs的filter过滤器  Python文件操作最佳实践_稳定性说明【指导】  Android实现代码画虚线边框背景效果  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程