版权声明:个人原创,欢迎转载。 https://blog.csdn.net/chuyangchangxi/article/details/91350426
Android夜间模式DayNight问题
目录
今天收到用户反馈,界面上完全看不到文字。
这在之前的测试过程中完全没有发现,好在用户发了截图。
一、问题
问题:界面上几乎看不到文字
机型:荣耀畅享8 Plus
位置 | 描述 | 截图 |
---|---|---|
主界面 | ||
升级界面 | ||
关于界面 |
二、相关代码
1 2 3 4 5 6 7 |
<TextView android:id="@+id/tv_title" android:textAppearance="@style/TextAppearance.AppCompat.Title" android:text="@string/app_name" android:singleLine="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> |
1 2 3 4 5 6 7 8 9 |
<TextView android:id="@+id/tv_name" android:textAppearance="@style/TextAppearance.AppCompat.Title" android:layout_width="0dp" android:gravity="left|center_vertical" android:layout_height="match_parent" android:singleLine="true" android:lines="1" android:layout_weight="1"/> |
三、问题所在
绝大部分TextView
都没有直接指定文本颜色,而是通过使用textAppearance
设置文本风格。
因此问题出在主题Theme
上。
使用的主题是Theme.AppCompat.DayNight.NoActionBar
,属于AppCompat
,相关资源打包在apk安装包中,因此跟手机系统的主题设置无关。
问题唯一的可能便是DayNight
上。
四、夜间模式
常量 | 说明 | 截图 |
---|---|---|
MODE_NIGHT_FOLLOW_SYSTEM | 默认值,跟随系统 | |
MODE_NIGHT_AUTO | 根据日出日落时间自动设定 | |
MODE_NIGHT_NO | 关闭夜间模式 | |
MODE_NIGHT_YES | 开启夜间模式 |
当夜间模式设置为MODE_NIGHT_YES后,出现了与问题一致的情况。
因为默认的夜间模式为MODE_NIGHT_FOLLOW_SYSTEM,因此可能出现开启夜间模式的情况。
神马笔记当前暂未实现夜间模式的配色,因此便出现了问题。
五、解决方案
在Application
的onCreate()
方法中增加下面代码。
1 |
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); |
强制关闭夜间模式。
六、Finally
世尊说我见人见众生见寿者见,即非我见人见众生见寿者见,是名我见人见众生见寿者见。