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

Android 更改不同状态下TextView的颜色,android,textview,android-studio-2.3,Android,Textview,Android Studio 2.3,我想改变不同状态下文本视图的颜色,例如按下、聚焦等。 我正在使用下面的代码,我需要添加一些更改TextView颜色的代码 <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <stroke

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

<?xml version="1.0" encoding="UTF-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <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>
        <ripple
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:color="?android:attr/colorControlHighlight" android:state_pressed="true">
            <item
                android:id="@android:id/mask"
                android:drawable="@color/colorBackgroundDark"></item>
        </ripple>
    </item>
</layer-list>

您是否尝试过使用可拖动选择器

<?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" />

在本例中,我使用了一个按钮,但我认为它也适用于文本视图

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

<?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>

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

<?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>

您是否尝试过使用可拖动选择器

<?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" />

在本例中,我使用了一个按钮,但我认为它也适用于文本视图

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

<?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>

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

<?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>


感谢您的回复。我尝试了选择器,但它没有给我任何输出。我已经显示了我的代码,请您告诉我将选择器放在哪里??不要忘记标记为答案,这样它也可以帮助其他人:)谢谢您的回答。我尝试了选择器,但它没有给我任何输出。我已经显示了我的代码,请告诉我将选择器放在哪里??不要忘记标记为答案,这样它也可以帮助其他人:)