【发布时间】:2011-06-18 13:56:40
【问题描述】:
我有一个 TextView,我想应用一个用于所有 TextView 元素的样式以及另一种我只在特定 Activity 中使用的样式。有没有可能这样做?
【问题讨论】:
标签: android xml android-layout inheritance styles
我有一个 TextView,我想应用一个用于所有 TextView 元素的样式以及另一种我只在特定 Activity 中使用的样式。有没有可能这样做?
【问题讨论】:
标签: android xml android-layout inheritance styles
只是一点点信息,可能会增加问题的整体价值 - 无耻地复制自:http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles
如果你想继承你自己定义的样式,你不必使用 parent 属性。相反,只需将要继承的样式名称作为新样式名称的前缀,用句点分隔。例如,要创建一个继承上面定义的 CodeFont 样式的新样式,但将颜色设为红色,您可以这样创作新样式:
<style name="CodeFont.Red">
<item name="android:textColor">#FF0000</item>
</style>
请注意,标签中没有父属性,但由于 name 属性以 CodeFont 样式名称(这是您创建的样式)开头,因此该样式继承了该样式的所有样式属性。然后,此样式会覆盖 android:textColor 属性以使文本变为红色。您可以将此新样式引用为@style/CodeFont.Red。
您可以通过将名称与句点链接起来,继续进行多次这样的继承。例如,您可以将 CodeFont.Red 扩展为更大,使用:
<style name="CodeFont.Red.Big">
<item name="android:textSize">30sp</item>
</style>
【讨论】:
您可以在 style.xml 中用另一种样式扩展一种样式:
<style name="current_weekday_white" parent="current_day_white">
<item name="android:textColor">#FFABAB</item>
</style>
【讨论】:
Android下的样式可以有父样式。
所以只需将MyActivityTextView 定义为父样式GeneralTextView,并更改/添加样式属性。
然后您可以使用MyActivityTextView 获取某些视图,使用GeneralTextView 获取其他视图。
在Defining Styles中有描述。
【讨论】: