- 首先看一下我们创建AlterDialog的步骤
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("标题")
.setMessage("信息")
.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).setPositiveButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}).create();
dialog.show();
- 下面开始修改标题和信息的style,通过反射实现
看代码`
/**
*
* @param dialog
* @param titleSize 标题大小
* @param titleColor 标题颜色
* @param msgSize 信息大小
* @param msgColor 信息颜色
*/
private void modifyAlterDialogStyle(AlertDialog dialog, int titleSize, int titleColor, int msgSize, int msgColor) {
int defaulteTitleSize = 16;
int defaulteTitleColor = Color.BLACK;
int defaulteMsgSize = 14;
int defaulteMsgColor = Color.BLACK;
if (titleSize<0) {
titleSize = defaulteTitleSize;
}
if (titleColor<0) {
titleColor = defaulteTitleColor;
}
if (msgSize<0) {
msgSize = defaulteMsgSize;
}
if (msgColor<0) {
msgColor = defaulteMsgColor;
}
Field mAlert = null;
try {
mAlert = AlertDialog.class.getDeclaredField("mAlert");
mAlert.setAccessible(true);
Object mAlertController = null;
try {
mAlertController = mAlert.get(dialog);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
//通过反射修改title字体大小和颜色
Field mTitle = mAlertController.getClass().getDeclaredField("mTitleView");
mTitle.setAccessible(true);
TextView mTitleView = null;
try {
mTitleView = (TextView) mTitle.get(mAlertController);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
mTitleView.setTextSize(titleSize);
mTitleView.setTextColor(titleColor);
//通过反射修改message字体大小和颜色
Field mMessage = mAlertController.getClass().getDeclaredField("mMessageView");
mMessage.setAccessible(true);
TextView mMessageView = null;
try {
mMessageView = (TextView) mMessage.get(mAlertController);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
mMessageView.setTextSize(msgSize);
mMessageView.setTextColor(msgColor);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
方法直接调用就行,传入指定的参数就可以了
注意:AlertDialog样式的修改要在show方法之后进行,否则报错。
modifyAlterDialogStyle(dialog,18,-1,16,-1);
- 修改button的style
获取底部按钮的实例
TextView positive_tv = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
TextView negative_tv = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
拿到对象后就可以任意的操作了。。。
positive_tv.setText("内容");
positive_tv.setTextColor(Color.RED);
positive_tv.setTextSize(16);
over—–