我是Android开发的新手。而我对Android风格的级联机制感到困惑。如果我想设置actionBar的textColor。我需要这样做。
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<!-- style for the action bar backgrounds -->
<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@drawable/border</item>
<item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
</style>
<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
<item name="android:textColor">#eee</item>
</style>
这很好!!但令我困惑的是为什么以下不起作用?
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="android:textColor">#eee</item>
</style>
答案 0 :(得分:0)
Android中的样式不会从包装/外部视图(ViewGroup
)继承到包装/内部视图,就像在HTML中一样。 因此,设置 android:textColor
的{{1}}不会影响操作栏标题文字的样式。
样式定义指出:
AppBaseTheme
作为样式(在这种情况下,作为活动的主题或应用程序的所有活动)时,使用AppBaseTheme
作为MyActionBar
actionBarStyle
作为样式(在本例中,作为操作栏的样式)时,使用MyActionBar
作为MyTheme.ActionBar.TitleTextStyle
titleTextStyle
作为样式(在本例中,作为标题文字的样式)时,请使用MyTheme.ActionBar.TitleTextStyle
作为#eee
。正如您所说,“当一个样式作为主题应用时,Activity或应用程序中的每个View都将应用它支持的每个样式属性。”但是,父样式(textColor
)定义了不同的TextAppearance.Holo.Widget.ActionBar.Title
,因此它不符合主题中定义的样式。