我目前可以在我的基本活动中使用以下工具将状态栏文本颜色从浅色更新为深色:
private fun toggleStatusBarTextColor(light: Boolean) {
// clear any existing flags
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE;
if(light) {
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
} else {
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
}
}
systemuivisibility现在在api 30上显示为已弃用,虽然弃用的方法暂时仍能正常工作,但我更愿意用更新的方法来替换它们。我已经读到,我们现在应该使用windowinsetscoller函数,但不清楚如何从文档中实现这一点。有人能给我指出正确的方向吗?
1条答案
按热度按时间d5vmydt91#
使用
WindowInsetsController.setSystemBarsAppearance (int appearance, int mask)
:要使状态栏变亮:
清除标志:
请注意
getInsetsController
因此?
检查。当然,您还必须明确检查
if(Build.VERSION.SDK_INT >= 30)
因为旧版本不支持此api。