Android framework 中并不提供对AlertDialog的title和message字体样式的更改,如有特殊需求的都是自定义对话框。
由于项目需求不得不更改系统AlertDialog的字体样式,我采用了反射的方法来获取内部title和message的view从而改变其样式。
try{
Field field= AlertDialog.class.getDeclaredField("mAlert");
field.setAccessible(true);
AlertController controller=(AlertController)field.get(dialog);
Log.i("temp", "mAlert: "+controller.toString());
Field viewField=AlertController.class.getDeclaredField("mMessageView");
viewField.setAccessible(true);
TextView message=(TextView)viewField.get(controller);
Log.i("temp", "mAlert: "+message);
message.setText("hello reflect!");
message.setTextSize(10);
} catch (Exception e) {
Log.i("temp", "E:mAlert: "+e.toString());
}
有问题请留言