如何在 recyclerview 中突出显示所选项目?

how to highlight selected item in recyclerview?

我是材质卡视图的新手,我想在长按时以编程方式更改卡的前景色。 但是 setCardForegroundColor() 方法的参数需要传递一个 ColorStateList 实例,我不知道如何根据需要创建 ColorStateList 实例。

所以谁能告诉我如何使用 ColorStateList 在长按时突出显示卡片视图?

为了在按下 RecyclerView 项时更改它们的颜色,我没有使用 ColorStateList,而是在列表项的 background 中使用了 drawable 项。以下是我的实现方式:

列表项示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item_selector"
    android:padding="8dp">
    <!-- Above: android:background defines the list item Touch Selector to highlight row -->

    <TextView
        android:id="@+id/rating_name_textview"
        style="@style/EditorFieldStyle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:textColor="@color/colorStatListItemText"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/rating_score_textview"
        style="@style/EditorFieldStyle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="end"
        android:textColor="@color/colorStatListItemText"
        android:textSize="18sp"
        tools:text="100" />

</LinearLayout>

列表项选择器示例:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Adding Touch Selectors for when items in the RecyclerView are touched -->
    <!-- Three states: pressed, activated, and selected -->
    <item android:drawable="@color/colorPrimaryLight" android:state_pressed="true" />
    <item android:drawable="@color/colorPrimaryLight" android:state_activated="true" />
    <item android:drawable="@color/colorPrimaryLight" android:state_selected="true" />

    <!-- Define background color for Touch Selectors when item is not selected (light gray) -->
    <item android:drawable="@color/colorBackgroundLight" />

</selector>

列表项引用列表项选择器并根据我在颜色值文件中定义的颜色适当突出显示 RecyclerView 项。