【发布时间】:2015-01-20 16:17:44
【问题描述】:
我正在为应用添加一些仅棒棒糖的样式。
我想在此处更改概览屏幕(如 Gmail)中标题的颜色:
我发现我可以做到
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:colorPrimary">@color/my_favorite_color</item>
</style>
实现它,但我只想为这种情况指定颜色,就像我可以做的那样:
<item name="android:statusBarColor">@color/my_favorite_color<item>
是否有特定的属性来设置标题的颜色?
附带问题:图标和标题也可以更改吗?
【问题讨论】:
-
这是stackoverflow.com/questions/26899820/…的副本,但由于赏金无法关闭。
-
@alanv 整洁,谢谢艾伦。我会争辩说这是重复的,因为您指出的问题是关于更改标题颜色的,这似乎是不可能的。无论如何,那里的答案完美地回答了我的问题。如果你能回答,我将移除/转移赏金,让你投票结束这个问题。
-
@MaciejGórski 只是一个改进(在我看来):如果您已经知道需要提供什么颜色,则可以覆盖
setTaskDescription(TaskDescription)并将相关的TaskDescription实例传递给超级调用。要从源头追溯,请查看TaskViewHeader。您应该以Activity#onApplyThemeResource(....)结尾 - 这是调用setTaskDescription(TaskDescription)的地方。 -
@Vikram 感谢您指出
onApplyThemeResource。从那里的代码中我们可以清楚地推断出背景不能通过应用程序主题更改,就像statusBarColor一样,除了使用colorPrimary。我不确定依赖setTaskDescription被框架调用会是一件好事。几乎没有尝试通过反射调用ActivityManagerNative.getDefault().setTaskDescription糟糕(我只是尝试制作不同大小的图标,但它没有用),但我认为我更喜欢更直接的方式来拥有兼容助手类if (SDK_INT >= LOLLIPOP). -
@Vikram 是的,它在
onCreate之前只被调用过一次,但是这种行为不是生命周期的一部分,没有记录在案,开发人员首先查看执行此操作的代码将无法无需在被覆盖的方法主体中使用 cmets 来解释其工作原理或深入研究 Android 代码即可理解它。在onCreate中自己调用它是陈述代码意图的一种直接方式,即使开发人员不知道此方法存在,他们也可以查看 javadoc。我喜欢写更少的代码,但更喜欢我写的代码清晰。
标签: android android-5.0-lollipop material-design android-styles