在styles.xml中设置单个TextView背景颜色

时间:2016-02-06 00:18:48

标签: android themes textview

我有一个包含多个主题的应用程序。我有一个TextView,其背景需要改变每个主题的颜色,所有其他TextView保持默认主题。我创建了一个自定义TextView小部件,并将其设置为我的xml布局文件中的TextView。

    <*My Package*.CustomHeaderTextView
        android:layout_width="250dp"
        android:layout_height="40dp" />

布局

    <style name="AppTheme.Blue" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/primaryColor_blue</item>
        <item name="colorPrimaryDark">@color/primaryColorDark_blue</item>
        <item name="colorAccent">@color/primaryAccent_blue</item>

        // Set here
        <item name="CustomHeaderTextView:backgroundColor">@color/primaryColorDark_blue</item>

    </style>

    <style name="AppTheme.Red" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primaryColor_red</item>
        <item name="colorPrimaryDark">@color/primaryColorDark_red</item>
        <item name="colorAccent">@color/primaryAccent_red</item>

        // Set here
        <item name="CustomHeaderTextView:backgroundColor">@color/primaryColorDark_red</item>
    </style>

如何在styles.xml中访问自定义TextView并更改每个主题中的背景颜色?

window.getSelection().toString();

1 个答案:

答案 0 :(得分:1)

我找到了一种可以为特定TextView设置不同背景颜色的方法。此外,您将能够根据您拥有的每个主题进行设置。

解决方案:

在attr.xml中创建自己的属性自定义属性

以下是实施:

第1步

首先,在res / values文件夹中创建一个attr.xml文件,然后插入以下内容:

<强> RES /值/ attr.xml

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

第2步

您创建的属性应在每个主题中使用颜色设置,如下所示:

<强> styles.xml

<resources>
    <style name="AppTheme.Blue" parent="Theme.AppCompat.NoActionBar">
        <!-- Specific Text View Color -->
        <item name="customTextViewBackAttributeColor">@color/color_for_theme_blue</item>
    </style>

    <style name="AppTheme.Red" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Specific Text View Color -->
        <item name="customTextViewBackAttributeColor">@color/color_for_theme_red</item>
    </style>
</resources>

第3步

最后,将该属性设置为自定义视图的背景颜色。

注意

您可以将此颜色设置为特定TextView的背景。这样,只有TextView将具有不同的背景颜色(而不是每个主题中定义的默认背景颜色)。这样,您不需要仅创建自定义视图以具有不同的背景颜色。

<强> RES /布局/ activity_layout.xml

<com.pivoto.gui.generic.CustomHeaderTextView
    android:layout_width="250dp"
    android:layout_height="40dp"
    android:text="Hello World!"
    android:background="?customTextViewBackAttributeColor"/>

<TextView
    android:layout_width="250dp"
    android:layout_height="40dp"
    android:text="Hello World2!"
    android:background="?customTextViewBackAttributeColor"/>

<TextView
    android:layout_width="250dp"
    android:layout_height="40dp"
    android:text="Hello World3!"
    android:background="?customTextViewBackAttributeColor"/>