0

我已经为 TextView 的 contentBg 样式定义了红色。我可以通过从父样式更改或重命名样式名称 myContentNew 将 TextView 颜色从红色更改为蓝色吗?TextView 样式名称-contentBG 不应更改。是否可以在 android 样式中使用。

<RelativeLayout 
   style="@style/myContent"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
<TextView 
   style="@style/contentBG"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"/>
</RelativeLayout>

我的代码应该如下所示

<RelativeLayout 
       style="@style/myContentNew"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content">
    <TextView 
       style="@style/contentBG"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"/>
 </RelativeLayout>

您可以通过我的附加图片获得清晰的想法。在此处输入图像描述

像 CSS:

.myContent .contentBg{background-color:red}
.myContentNew .contentBg{background-color:blue}

谢谢

4

2 回答 2

1

这是一个创建 2 个不同主题的示例:

您需要首先修改您的清单文件以调用默认的自定义主题,例如:

<application
    android:name="RateDayApplication"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/CustomTheme" >

然后,在您的 styles.xml 文件中,准备 2 个不同的主题,包含相同的样式contentBG

<!-- *** THEME WITH RED BG*** -->
<style name="CustomTheme" parent="@android:style/Theme.Holo.Light">
    <item name="contentBG">@style/contentBGred</item>

</style>

<style name="contentBGred" >
    <item name="android:colorBackground">@color/red</item>
</style>

<!-- *** THEME WITH BLUE BG*** -->
<style name="CustomThemeNew" parent="@android:style/Theme.Holo.Light">
    <item name="contentBG">@style/contentBGblue</item>
</style>

<style name="contentBGblue" >
    <item name="android:colorBackground">@color/blue</item>
</style>

重要提示:这里我Theme.Holo.Light用作父主题,如果您使用不同的主题,您可以更改它。

在上面的 2 个主题中,样式具有相同的名称,它将在您的 XML 文件中用作参考。为了声明此引用,您必须将其添加到文件夹attrs.xml下的无标题values文件中。

以下是内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <attr name="contentBG" format="reference" />
</resources>

完成后,您只需在 XML 文件中以这种方式调用此样式(您不再需要布局上的样式):

<RelativeLayout 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
<TextView 
   style="?contentBG"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"/>
</RelativeLayout>

这里的问号表示样式将使用引用加载。将使用的样式将是应用于Activity.

您可以使用以下方式轻松设置您想要的活动主题:

setTheme(R.style.CustomTheme);

或者

setTheme(R.style.CustomThemeNew);
于 2013-05-28T08:23:57.697 回答
1

恐怕不是。

一旦确定了contentBG样式。它无法更改,但在代码中。

于 2013-05-28T06:43:58.107 回答