如何在android中的一个元素中应用两种不同的样式?

时间:2011-01-31 13:04:26

标签: android xml android-layout inheritance styles

我有一个TextView,我想应用一个Style用于所有TextView元素以及另一个我只在特定Activity中使用的样式。有没有可能这样做?

3 个答案:

答案 0 :(得分:21)

可能会增加问题整体价值的一小部分信息 - 无耻地复制: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>

答案 1 :(得分:14)

Android下的样式可以有父样式。

所以只需将MyActivityTextView定义为GeneralTextView作为父样式,然后更改/添加样式属性。

然后,您可以将MyActivityTextView用于某些观看,将GeneralTextView用于其他观看次数。

Defining Styles中描述了它。

答案 2 :(得分:4)

您可以在style.xml中扩展一种样式:

<style name="current_weekday_white" parent="current_day_white">
    <item name="android:textColor">#FFABAB</item>
</style>