今天有个需求是修改系统dialog的标题颜色,但是dialog并没有暴露修改的接口,所以只能利用反射来修改
mTitleView
//修改标题的颜色 try { Field alert = AlertDialog.class.getDeclaredField("mAlert"); alert.setAccessible(true); Object mAlertController = alert.get(dialog); Field mMessage = mAlertController.getClass().getDeclaredField("mTitleView"); mMessage.setAccessible(true); TextView mTitleView = (TextView) mMessage.get(mAlertController); mTitleView.setTextColor(Color.WHITE); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); }
修改dialog的内容也是如此,找到dialog的id,然后修改就可以了