在不同的状态下更改TextView的颜色

时间:2017-08-09 20:48:20

标签: android textview android-studio-2.3

我想在不同的状态下更改TextView的颜色,例如在按下,聚焦等方面。 我正在使用以下代码,我需要一些改变TextView颜色的添加。

sys.path

1 个答案:

答案 0 :(得分:2)

您是否尝试使用可绘制选择器?

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/background_category_filter_selected" android:state_enabled="true" android:state_pressed="true"></item>
    <item android:drawable="@drawable/background_category_filter_not_selected" android:state_enabled="true" android:state_pressed="false"></item>
</selector>

在这个例子中,我有不同的抽屉,用于按下或不按下按钮。你可以使用其他状态,如主动,专注...... 后来我就这么做了

         <Button
                android:id="@+id/first_day_forward"
                android:layout_width="0dp"
                android:layout_height="36dp"
                android:layout_marginEnd="15dp"
                android:layout_marginTop="2dp"
                android:layout_weight="2"
                android:background="@drawable/background_filter_button_square"
                android:text="&gt;"
                android:textAppearance="@style/fontMontseratReg"
                android:textColor="@drawable/filter_text_button" />

在示例中,我使用了Button,但我认为它也适用于Text View。

要更改xml 形状标记中的填充,请使用 solid ,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff"/>
    <corners android:radius="3dp"/>
</shape>

在你的情况下,你可以这样做:

<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape>
            <stroke android:width="1dp" android:color="#FFFFFF" />
            <corners android:radius="2dp"/>
            <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <ripple
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:color="?android:attr/colorControlHighlight" >
            <item
                android:id="@android:id/mask"
                android:drawable="@color/colorBackgroundDark"></item>
        </ripple>
    </item>
</selector>