Изменение цвета текста с помощью селектора не работает должным образом - PullRequest
0 голосов
/ 02 мая 2019

В дальнейшем, хотя текст меняет цвет при щелчке макета, цвет не сохраняется, хотя я явно установил view.setSelected(true) в коде:

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="40dp"
        android:gravity="center"
       android:orientation="horizontal"
       android:clickable="true"
       android:focusable="true"
>


    <TextView
            android:id="@+id/txt"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:paddingStart="16dp"
            android:gravity="center_vertical"
            android:text="Test String"
            android:background="@drawable/background_disabled"
            android:textColor="@color/selector_selection"/>
    />

</LinearLayout>


// background_disabled.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/red"/>
        </shape>
    </item>
    <item android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/white"/>
        </shape>
    </item>

</layer-list>



// selector_selection.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/green" android:state_pressed="false"/>
    <item android:color="@color/red" android:state_pressed="true"/>
    <item android:color="@color/red" android:state_selected="true"/>
 </selector>

При нажатии на LinearLayout цвет текста меняется, но он переключается обратно на отключенный цвет, даже если я установил setSelected(true) для родительского макета.
Как я могу это исправить?

Обновление:
Изменяя селектор следующим образом, он работает:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:color="@color/red" android:state_pressed="true"/>
   <item android:color="@color/red" android:state_selected="true"/>
   <item android:color="@color/green"/>
</selector>

В основном я удалил состояние false и добавил в конце значение по умолчанию.
Почему это решает проблему?

...