Android 仅在暗模式下自定义应用程序栏颜色
我正在我的应用程序中使用材质主题。根据材料网站上的规定,Android 仅在暗模式下自定义应用程序栏颜色,android,material-design,Android,Material Design,我正在我的应用程序中使用材质主题。根据材料网站上的规定, 应用程序栏在浅色主题中使用ColorPrimary,在深色主题中使用ColorSurface。我想在黑暗主题中更改应用程序栏的颜色。显然,我可以通过仅在黑暗主题中更改ColorSurface属性来做到这一点,但它会影响其他也使用此属性的组件,如对话框、计时器等。是否有任何方法可以仅在黑暗主题中更改应用程序栏的颜色?我有点晚了,但是,如果有人正在寻找某种形式的解决方案,下面的方法对我很有效 我不确定基于样式的解决方案是什么,但您可以通过编程
应用程序栏在浅色主题中使用
ColorPrimary
,在深色主题中使用ColorSurface
。我想在黑暗主题中更改应用程序栏的颜色。显然,我可以通过仅在黑暗主题中更改ColorSurface
属性来做到这一点,但它会影响其他也使用此属性的组件,如对话框、计时器等。是否有任何方法可以仅在黑暗主题中更改应用程序栏的颜色?我有点晚了,但是,如果有人正在寻找某种形式的解决方案,下面的方法对我很有效
我不确定基于样式的解决方案是什么,但您可以通过编程方式执行以下操作(我在这篇关于daynight主题的文章中发现了这一点:)
您将使用主题父项,如下所示:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
Kotlin
//again using a bitwise AND operator here
var currentNightMode: Int = this.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
when(currentNightMode){
Configuration.UI_MODE_NIGHT_NO ->{
// Night mode is not active, we're in day time
}
Configuration.UI_MODE_NIGHT_YES ->{
// Night mode is not active, we're in day time
supportActionBar?.setBackgroundDrawable(
ColorDrawable(resources.getColor(R.color.colorAccent, null))
)
}
Configuration.UI_MODE_NIGHT_UNDEFINED ->{
// We don't know what mode we're in, assume notnight
}
}
如果我确定,您想更改appbar in dark主题的背景色,那么如果是,请使用night qualifier创建一个新的样式资源文件,声明您的应用样式并覆盖类似这样的“actionBarStyle”
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="Widget.MaterialComponents.ActionBar.Solid">
<item name="background">@android:color/darker_gray</item>
</style>
@样式/MyActionBar
@android:颜色/深灰色
我希望这就是你想要的…这不允许我自定义我的应用程序栏的颜色,而只是将模式设置为白天或晚上。我理解你的问题是为你的应用程序使用明暗主题,并仅将应用程序栏更改为暗,上面的代码就是这样做的。它只是检测黑暗或光明模式是否处于活动状态,并允许您对其进行操作,它不设置任何内容。如果您希望更改actionBar的颜色,可以使用上面的代码
getSupportActionBar()。setBackgroundDrawable代码>等等,或者给我提供一点更详细的信息,我会帮你解决(比如带工具栏的appbar布局?你使用的是什么主题?)最好的答案。它帮助了我。有一些教程可以学习如何在主题中更改颜色吗?我永远不知道我要带父母去哪里。对于材料主题,我建议。对于继承样式的父级,没有特定的文档。对我来说,大多数时候,它都在搜索和进入小部件样式本身@韦努斯
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="Widget.MaterialComponents.ActionBar.Solid">
<item name="background">@android:color/darker_gray</item>
</style>