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

如何在android中对一个元素应用两种不同的样式?,android,xml,android-layout,inheritance,styles,Android,Xml,Android Layout,Inheritance,Styles,我有一个TextView,我想应用一个用于所有TextView元素的样式,再加上另一个仅在特定活动中使用的样式。有没有可能做到这一点?Android下的样式可以有父样式 因此,只需将MyActivityTextView定义为父样式,并更改/添加样式属性即可 然后,您可以对某些视图使用MyActivityTextView,对其他视图使用GeneralTextView 如中所述。您可以在style.xml中用一种样式扩展另一种样式: <style name="current_weekday_w

我有一个TextView,我想应用一个用于所有TextView元素的样式,再加上另一个仅在特定活动中使用的样式。有没有可能做到这一点?

Android下的样式可以有父样式

因此,只需将
MyActivityTextView
定义为父样式,并更改/添加样式属性即可

然后,您可以对某些视图使用
MyActivityTextView
,对其他视图使用
GeneralTextView


如中所述。

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

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

#法巴布

只是一小部分可能会增加问题整体价值的信息——无耻地抄袭自:

如果要从自己定义的样式继承,则不必使用父属性。相反,只需将要继承的样式名称作为新样式名称的前缀,并用句点分隔。例如,要创建继承上面定义的CodeFont样式但颜色为红色的新样式,可以编写如下新样式:

  <style name="CodeFont.Red">
        <item name="android:textColor">#FF0000</item>
    </style>

#FF0000
请注意,标记中没有父属性,但由于name属性以CodeFont样式名称(这是您创建的样式)开头,因此该样式将继承该样式的所有样式属性。然后,此样式将覆盖android:textColor属性,使文本变为红色。您可以将此新样式引用为@style/CodeFont.Red

通过将名称与句点链接,可以继续像这样多次继承。例如,您可以将CodeFont.Red扩展为更大,包括:

<style name="CodeFont.Red.Big">
    <item name="android:textSize">30sp</item>
</style>

30便士

哦,我明白了。太好了,非常感谢。还有一个问题:子样式是否也可以覆盖父属性?是的,它可以覆盖父属性。我发现有趣的是,尽管我以前访问过并研究/浏览过该页面,但我不知道这个有趣且非常有用的小贴士。谢谢@brucer。嘿,我已经用文本视图尝试过了,但只有第一种样式有效,扩展的样式无效。有什么线索吗?