关于dialog 切换主题的难题

在android 项目开发中,遇到一个比较难以解决的问题:在dialog已经显示的情况下,用户去手动切换主题:由白天模式切换到黑夜模式

众所周知,在主题切换时,有些切换方式(代码控制)会走重走activity 的onCreate ,或者

onConfigurationChanged(以这个居多)。但是如果dialog已经显示出来时,很多情况下区切换主题,dialog的颜色并没有切换,此时需要开发者手动去设置,具体如下

dialog 的root一般在activity或者fragment,所以在你收到onConfigurationChanged{

    changeSkin()

}

private void changeSkin(){

//1.拿到dialog中需要切换颜色的所有控件,例如

textView title = dialog.findViewById(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))

}

你可能感兴趣的:(android,android,studio)