【发布时间】:2015-08-06 16:58:47
【问题描述】:
我正在处理 Android L 颜色定义来定义 ListView 的行。我有一个主题:
<item name="colorAccent">@color/color_blue_dark</item>
在我的行中,我定义了另一个:
<style name="DefaultRow">
<item name="colorAccent">@color/color_sand</item>
<item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>
假设 colorAccent 值将被覆盖。但如果我在我的行中这样做就不会:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
style="@style/DefaultRow"/>
但如果我这样做,它会起作用:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
...
android:theme="@style/DefaultRow"/>
有什么区别? colorAccent 是在应用主题时定义的,以后不会被覆盖吗?如何解决这个问题以具有向后兼容性?
【问题讨论】:
-
感谢您的评论,但我仍然不清楚为什么会发生这种情况,据我了解,样式在本地应用于视图,并将主题应用于其后代。但是为什么这会改变视图本身的行为呢?
-
android:theme属性应用于视图本身及其后代。在内部,它创建一个ContextThemeWrapper并针对该上下文扩展视图及其后代。
标签: android android-theme android-styles