今天碰到要把我们项目中所有用到的dialog的颜色换一下,项目中全部用到是系统最原始的dialog,为它一个一个写布局,不合适
找了资料,只需在显示dialog的时候设置监听器,在监听器里改变颜色
final AlertDialog alertDialog = new AlertDialog.Builder(context).setCustomTitle(titleView).create();
alertDialog.setOnShowListener(new ShowDialogListener());
alertDialog.show()
public class ShowDialogListener implements DialogInterface.OnShowListener {
@Override
public void onShow(DialogInterface dialog) {
Dialog d = ((Dialog) dialog);
Context context= d.getContext();
//改变分割线颜色
int divierId = context.getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = d.findViewById(divierId);
divider.setBackgroundColor(context.getResources().getColor(R.color.driver_dialog));
//改变标题颜色
int diviertitleId = context.getResources().getIdentifier("android:id/alertTitle", null, null);
TextView diviertitle = (TextView)((Dialog) dialog).findViewById(diviertitleId);
diviertitle.setTextColor(context.getResources().getColor(R.color.title_dialog));
}
}