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

Bru*_*ser 16 xml inheritance android styles android-layout

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

Bru*_*ser 21

只是一小部分信息可能会增加问题的整体价值 - 无耻地复制来自:http://developer.android.com/guide/topics/ui/themes.html#DefiningStyles

如果要继承自己定义的样式,则不必使用parent属性.相反,只需将要继承的样式的名称添加到新样式的名称前面,并用句点分隔.例如,要创建一个继承上面定义的CodeFont样式的新样式,但将颜色设置为红色,您可以像这样创建新样式:

  <style name="CodeFont.Red">
        <item name="android:textColor">#FF0000</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

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

您可以通过使用句点链接名称来继续这样多次继承.例如,您可以将CodeFont.Red扩展为更大,具有:

<style name="CodeFont.Red.Big">
    <item name="android:textSize">30sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

  • 我发现有趣的是,即使我之前访问并研究/浏览过那个页面,我也不知道这个有趣且非常有用的信息.谢谢@Bruiser. (4认同)

Pet*_*ego 14

Android下的样式可以具有父样式.

所以只需MyActivityTextView定义GeneralTextView为父样式,并更改/添加样式属性.

然后,您可以使用MyActivityTextView一些视图和GeneralTextView其他视图.

它在定义样式有所描述.

  • 是的,它可以覆盖父属性. (2认同)