Android原生AlertDialog修改标题,内容,按钮颜色,字体大小等

article/2025/9/26 11:54:50

这里写图片描述

 

private void showAlerDialog() {AlertDialog dialog = new AlertDialog.Builder(this).setTitle("AlerDialog").setMessage("这是一个AlertDialog").setPositiveButton("确定",null).setNegativeButton("取消",null).create();dialog.show();}

需求
我们在android中可以很容易的通过上面的代码弹出一个AlertDialog,其中的标题,内容还有按钮的颜色大小等,系统代码中并没有暴露出方法来允许我们自定义他们,可假如有需求,为了突出确定,需要将确定的按钮修改为红色,我们该怎么做呢,或者是需要修改标题颜色等,当然我们可以选择自定义View,在此处我们不讨论这个方法,我们尝试修改原生的AlertDialog的标题,按钮颜色等;
这里写图片描述

 假如我们需要修改内容的颜色为蓝色,我们该如何修改呢?既然原生的AlertDialog没有提供修改的方法,那我们可以通过反射来提取到这个控件,然后修改其颜色即可;

public class AlertDialog extends AppCompatDialog implements DialogInterface {final AlertController mAlert;...
}

点开AlertDialog源码我们发现有一个全局的AlertControllerAlertDialog主要就是通过这个类来实现的,我们继续看这个类的源码;

class AlertController {...private ImageView mIconView;private TextView mTitleView;private TextView mMessageView;private View mCustomTitleView;...

在这个类的源码中我们看到了有mTitleViewmMessageView等字段,这些字段就是我们所需要的,我们就可以通过反射来动态修改他们;

private void showAlerDialog() {AlertDialog dialog = new AlertDialog.Builder(this).setTitle("AlerDialog").setMessage("这是一个AlertDialog").setPositiveButton("确定",null).setNegativeButton("取消",null).create();dialog.show();try {Field mAlert = AlertDialog.class.getDeclaredField("mAlert");mAlert.setAccessible(true);Object mAlertController = mAlert.get(dialog);Field mMessage = mAlertController.getClass().getDeclaredField("mMessageView");mMessage.setAccessible(true);TextView mMessageView = (TextView) mMessage.get(mAlertController);mMessageView.setTextColor(Color.BLUE);} catch (IllegalAccessException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();}}

通过上面的代码,我们就可以通过反射来修改原生AlertDialog中内容的颜色或者大小;

这里写图片描述

 修改按钮的颜色同样可以通过反射的方法来完成,不过原生的AlertDialog提供了相应的方法来实现针对按钮的操作,所以我们可以通过以下方法直接调用,例如将按钮的颜色一个修改为黑色,一个修改为蓝色:

  private void showAlerDialog() {AlertDialog dialog = new AlertDialog.Builder(this).setTitle("AlerDialog").setMessage("这是一个AlertDialog").setPositiveButton("确定",null).setNegativeButton("取消",null).create();dialog.show();dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.BLUE);dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(Color.BLACK);}

通过以上代码,就可以将AlertDialog中按钮的颜色来自己定义;

这样我们就完成了自定义标题,内容,按钮颜色或者大小等,需要注意的是,不管是通过反射,还是原生的方法来修改,都需要在调用AlertDialogshow()方法后进行,否则会报错;


http://chatgpt.dhexx.cn/article/YqnpWCwL.shtml

相关文章

【android学习】Dialog对话框

1,Dialog 1)onCreateDialog(int) 2)showDialog(int) 第一次请求时,会从Activity中调用onCreateDialog。 3)onPrepareDialog(int,Dialog) 在每次打开对话框时被调用。 4)dismissDialog(int) 关闭对话…

Android Dialog使用详解

对话框是提示用户作出决定或输入额外信息的小窗口,通常不会填充整个屏幕,用于进行一些额外交互 Dialog 类是对话框的基类,但应该避免直接实例化 Dialog,而应使用其子类,比如 AlertDialog 此对话框可显示标题、提示信…

Android 修改AlertDialog原生setPositiveButton的字体颜色背景颜色大小边距位置

看效果图: public void lanyaClick(View v) {//点击确定之后转向登陆框LayoutInflater factory LayoutInflater.from(Beforestart.this);//得到自定义对话框final View DialogView factory.inflate(R.layout.item_alert_dialog, null);//创建对话框android.app.Al…

setPositiveButton和setNegativeButton的区别

setPositiveButton和setNegativeButton的区别和setNeutralButton的区别 三者都是AlertDialog弹出框的按钮,都是封装好的button,只是显示的位置不同,项目中可根据情况选择使用,setNegativeButton一般用于确认,setNegat…

GPS(rinex格式)数据解析详细解读

RINEX格式现如今已成为GPS测量应用中的标准数据格式,目前应用最为广泛、最普遍的是RINEX格式的第2个版本,该版本能够用于包括静态和动态GPS测量在内的不同观测模式数据。在该版本中定义了6种不同类型的数据文件,分别用于存放不同类型的数据&a…

2020/10/23 GPS的数据格式学习

GPS的数据格式学习 一、在使用GPS的通过串口向电脑发送数据的时候,要注意GPS数据线的连接; 1.1 VCC接VCC;(VCC表示接电源正极) 1.2 GND接GND;(GND表示接地或接电源负极) 1.3 TX接RX…

GPS数据包格式+数据解析

GPS数据包格式数据解析 一、全球时区的划分: 每个时区跨15经度。以0经线为界向东向西各划出7.5经度,作为0时区。即0时区的经度范围是7.5W——7.5E。从7.5E与7.5W分别向东、向西每15经度划分为一个时区,直到东11区和西11区。东11区最东部的经度…

GPS研究---GPS 数据格式

GPS 数据处理时所采用的观测数据是来自观测的 GPS 接收机。由于接收机的型号很多,厂商设计的数据格式各不相同,国际上为了能统一使用不同接收机的数据, 设计了一种与接收机无关的 RINEX(The Receiver Independent Exchange Format)格式&#…

GPS数据格式的分析

文章目录 前言一、数据格式解析1、GPGGA2、GPRMC3、GPCHC4、Kitti数据集oxts数据 二、驱动1、功能包1.1 解析GPGGA1.2 华测GPCHC 2、ROS相关消息类型2.1 sensor_msgs::NavSatFix2.2 gps_common::GPSFix2.3 sensor_msgs::Imu 3、驱动思路 三、时间1、UTC时间2、时间戳 前言 GPS…

GPS GLONASS数据文件类型解析

GPS & GLONASS数据文件类型解析 一、GPS数据格式 RINEX格式现如今已成为GPS测量应用中的标准数据格式,目前应用最为广泛、最普遍的是RINEX格式的第2个版本,该版本能够用于包括静态和动态GPS测量在内的不同观测模式数据。在该版本中定义了6种不同类…

GPS的数据格式介绍

GPRMC&#xff08;建议使用最小GPS数据格式&#xff09; $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF> 1) 标准定位时间&#xff08;UTC time&#xff09;格式&#xff1a…

Android ExpandableListView

ExpandableListView可以显示一个视图垂直滚动显示两级列表中的条目&#xff0c;这不同于列表视图&#xff08;ListView&#xff09;。ExpandableListView允许有两个层次&#xff1a;一级列表中有二级列表。 比如在手机设置中&#xff0c;对于分类&#xff0c;有很好的效果。手机…

ExpandableListView用法

先上个效果图&#xff1a; 1&#xff0c;我用的fragment import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.dami.student.ui.chatui.adapter.ContactsExpandableListAdapter; import com.dami.student.R; import android.conten…

android expandablelistview简单应用,android ExpandableListView简单例子

android中常常要用到ListView&#xff0c;有时也要用到ExpandableListView&#xff0c;如在手机设置中&#xff0c;对于分类有很好的效果&#xff0c;会用ListView的人一定会用ExpandableListView&#xff0c;因为 ExpandableListView extends ListView的&#xff0c;下面来看个…

android expandablelistview横向,完美实现ExpandableListView二级分栏效果

本文实例为大家分享了ExpandableListView二级分栏效果的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 对ExpandableListView控件进行封装(未自定义)直接上代码&#xff1a; 通用ViewHolder类&#xff0c;仅在setImageResource中添加代码 package com.svp.haoyan.ex…

android expandablelistview横向,expandableListView 总结

实现效果图&#xff1a; expandableListView groupIndicator 图片默认是在左边&#xff0c;而且比较难看&#xff0c;而我要的是实现groupIndicator 在右边自定义图片&#xff0c; 换图片 最简单的就是直接copy 系统 android:drawable/expander_group ?android:attr/expandab…

Android学习之ExpandableListView

什么是ExpandableListView ExpandableListView是扩展的ListView&#xff0c;继承自ListView&#xff1b;ExpandableListView可以实现点击展开列表&#xff0c;再点击收缩回去的效果。 ExpandableListView的使用 首先需要在主布局文件中声明ExpandableListView&#xff1b; …

ExpandableListView详解

文章目录 效果图ExpandableListView的简介与使用去掉ExpandableListView的箭头以及自定义Indicator解决setOnChildClickListener失效问题解决collapseGroup(i)崩溃问题解决group_item.xml中包含CheckBox、EditText等&#xff0c;点击不能展开的问题 1.效果图 2.ExpandableLi…

values_list()

转载&#xff1a;https://www.cnblogs.com/chenchao1990/p/5311531.html?utm_sourcetuicool&utm_mediumreferral

列表(lists)

Lists and the things you can do with them.Includes indexing(索引&#xff09;,slicing &#xff08;切片&#xff09;and mutating&#xff08;变异&#xff09;. 1.Python 中的列表表示有序的值序列。 以下是如何创建它们的示例&#xff1a; primes [2,3,5,7] #我们可以…