在android 项目开发中,遇到一个比较难以解决的问题:在dialog已经显示的情况下,用户去手动切换主题:由白天模式切换到黑夜模式
众所周知,在主题切换时,有些切换方式(代码控制)会走重走activity 的onCreate ,或者
onConfigurationChanged(以这个居多)。但是如果dialog已经显示出来时,很多情况下区切换主题,dialog的颜色并没有切换,此时需要开发者手动去设置,具体如下
dialog 的root一般在activity或者fragment,所以在你收到onConfigurationChanged{
changeSkin()
}
private void changeSkin(){
//1.拿到dialog中需要切换颜色的所有控件,例如
textView title = dialog.findViewById<TextView>(R.id.tv_title)
//2.主动获取当前的主题是啥getCurrentThemeMode
boolean isNightMode=getCurrentThemeMode()
//3.根据不同的主题,设置不同的颜色即可
if(isNightMode){
title.setTextColor(getColor(R.color.text_color_night))
}else{
title.setTextColor(getColor(R.color.text_color_day))
}