Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色

Android AlertDialog修改标题、内容、按钮的字体大小和字体颜色

作者头像
yechaoa
发布于 2022-06-10 05:28:04
发布于 2022-06-10 05:28:04
4.9K00
代码可运行
举报
文章被收录于专栏:移动开发专栏移动开发专栏
运行总次数:0
代码可运行

“字体要大、颜色要鲜艳”,这话听着熟悉吧,在日常开发中,往往因为业务的不同、受众群体的特殊,可能需要我们做出特殊的处理。 今天是对原生AlertDialog做一些大小和颜色的修改。

有两种方案:
  • 1、自定义contentView,大小颜色什么的直接在xml文件中写好就ok。
  • 2、在原生的基础上做一些修改。

这里主要说的是第二种方案

效果图对比

先看一下修改前的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 AlertDialog builder = new AlertDialog.Builder(Activity.this)
                .setTitle("这是标题")
                .setMessage("这是内容")
                .setPositiveButton("确定", null)
                .setNegativeButton("取消", null)
                .show();

很简单。 这时候点开AlertDialog查看源码,构造方法以下就是get set 方法了,可以看到一个getButton方法

这里的返回是一个button,看注释,可以返回 “确定取消” 按钮,那既然得到button对象了,大小颜色什么的自然可以直接set了。

ok,继续往下看,可以看到一个重写的setTitle方法,

注意这里是引用的一个mAlert对象,且调用它的setTitle方法,ok,点进去这个setTitle方法查看究竟。

诶,这里的代码看起来是不是很熟悉了,跟平常的从xml文件获取控件然后设置属性一样的嘛。 找到mTitleView的声明,

诶,旁边就是mMessageView,查找引用,果然就是setMessage方法

ok,至此,已经很简单了,我们需要通过mAlert对象去获取mTitleViewmMessageView,然后就可以设置大小和颜色了。 这里就需要用到反射的知识去拿到mAlert对象了。

看代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 AlertDialog builder = new AlertDialog.Builder(Activity.this)
                .setTitle("这是标题")
                .setMessage("这是内容")
                .setPositiveButton("确定", null)
                .setNegativeButton("取消", null)
                .show();
                
        /修改 确定取消 按钮的字体大小
        builder.getButton(AlertDialog.BUTTON_POSITIVE).setTextSize(26);
        builder.getButton(DialogInterface.BUTTON_NEGATIVE).setTextSize(26);

        try {
            //获取mAlert对象
            Field mAlert = AlertDialog.class.getDeclaredField("mAlert");
            mAlert.setAccessible(true);
            Object mAlertController = mAlert.get(builder);

            //获取mTitleView并设置大小颜色
            Field mTitle = mAlertController.getClass().getDeclaredField("mTitleView");
            mTitle.setAccessible(true);
            TextView mTitleView = (TextView) mTitle.get(mAlertController);
            mTitleView.setTextSize(40);
            mTitleView.setTextColor(Color.YELLOW);

            //获取mMessageView并设置大小颜色
            Field mMessage = mAlertController.getClass().getDeclaredField("mMessageView");
            mMessage.setAccessible(true);
            TextView mMessageView = (TextView) mMessage.get(mAlertController);
            mMessageView.setTextColor(Color.RED);
            mMessageView.setTextSize(30);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }

show之后,我们可以直接获取button对象,然后通过反射获取title 和 message对象,然后设置颜色和大小。 其他功能可以自己探索源码。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Builder设计模式和AlertDialog的源码分析
Builder模式是一步步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细的控制对象的构造流程。该模式是为了将构造复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
见得乐
2022/07/20
4000
Android-弹窗AlterDialog对话框使用全解析
// 由于Dialog 本身原因 选完后 dialog会自动关闭 如果不想自动关闭,可以:不关闭方法
圆号本昊
2021/09/24
2K0
Android-弹窗AlterDialog对话框使用全解析
AlertDialog的几种用法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155132.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
4380
AlertDialog的几种用法
Android之AlertDialog的基本使用
坦白说,AlertDialog我在工作中用得并不多,因为AlertDialog的样式比较固定和呆板,为了和App的整体设计匹配,一般都是使用自定义的Dialog,只有在要求不高时用一下。但是作为Android的基础控件之一,掌握它是十分有必要。网上相关的资料已经多如牛毛,一搜就有好几页。但我还是决定写一篇自己的博客。
233333
2021/04/09
1.6K0
Android之AlertDialog的基本使用
Android设计模式学习之Builder模式
建造者模式(Builder Pattern),是创造性模式之一,Builder 模式的目的则是为了将对象的构建与展示分离。Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。
老马的编程之旅
2022/06/22
7990
Android设计模式学习之Builder模式
AlertDialog.Builder setPositiveButton 点击时不关闭dialog
AlertDialog.Builder setPositiveButton 与 setNegativeButton 点击时都会自动关闭 dialog,但是 文本控制 不想其关闭 两种方法
全栈程序员站长
2022/07/04
9490
android入门 — AlertDialog对话框
  常见的对话框主要分为消息提示对话框、确认对话框、列表对话框、单选对话框、多选对话框和自定义对话框。   对话框可以阻碍当前的UI线程,常用于退出确认等方面。   在这里主要的步骤可以总结为:   1.创建AlertDialog.Builder对象;   2.调用setTitle()或setCustomTitle()方法设置标题;   3.调用setIcon()设置图标;   4.调用setPositiveButton()、setNegativeButton()或setNeturalButton()添加
Mister24
2018/05/14
1.2K0
Android开发必知--几种不同对话框的实现
  在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的。在看具体实例之前先对AlertDialog做一个简单介绍。AlertDialog是功
codingblock
2017/12/28
2.4K0
Android开发必知--几种不同对话框的实现
Android常用对话框大全——Dialog「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137960.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/23
4.4K0
Android常用对话框大全——Dialog「建议收藏」
Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
AlertDialog能够生成各种内容的对话框。可是每种对话框都会有这样的的结构:
全栈程序员站长
2022/07/07
8170
Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
AlertDialog点击确定不消失
但这样我们点击确定按钮的时候AlertDialog会默认消失掉。 但如果我们在弹窗里添加一个EditText输入框,判断如果输入框为空的时候弹提示而告诉用户输入框为空,请输入内容。 这种情况就需要保留AlertDialog让它不消失。
longzeqiu
2019/08/14
3K0
对话框(AlertDialog)使用
image.png 目录 AlertDialog AlertDialog也就处对话框。 使用方式分为6种: 简单dialog 列表dialog 单选dialog 多选dialog 自定义dialog 使用adapter的dialog 举例第一种的使用 代码: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.mipmap.ic_launcher_round);
李小白是一只喵
2020/04/24
2K0
Android常用控件
android:layout_width:指定控件的宽度,可选值:match_parent (fill_parent)和wrap_content ,match_parent 表示让当前的控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小;wrap_content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前大小,也可以设置特定的大小。
全栈程序员站长
2022/09/06
8110
Android弹窗二则: PopupWindow和AlertDialog
android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(this);
sean_yang
2018/09/04
1.7K0
Android弹窗二则: PopupWindow和AlertDialog
android dialog用法
转自:http://www.cnblogs.com/weeds/archive/2012/01/17/2324238.html
forrestlin
2022/04/02
1.5K0
笔记17 | 复习AlertDialog(对话框)示例
前言 本节给大家带来是显示提示信息的第三个控件AlertDialog(对话框),查看源码知道是Dialog的子类!ProgressDialog,TimePickerDialog父类等。另外,会发现构造方法是保护的,如果我们要创建AlertDialog的话,我们需要使用到该类中的一个静态内部类:public static class Builder,然后来调用AlertDialog里的相关方法,来对AlertDialog进行定制,最后调用show()方法来显示我们的AlertDialog对话框!好的,下面我们
项勇
2018/06/19
6700
android 设置系统dialog 样式
 1、编写一个文本样式。 DIALOG的标题是一个textview,在sytles.xml中,添加如下代码来设置你自己的文本样式:   ?   <style name="DialogWindo
再见孙悟空_
2023/02/10
1.5K0
相关推荐
Builder设计模式和AlertDialog的源码分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验