正确设置列表项的背景

Correctly setting the background of a list item

我使用 RecyclerView 和一个简单的项目布局,其中包含一个 ConstraintLayout 来保存每个项目的文本元素。我想设置所有项目的背景 while

  1. 点击时显示涟漪效果。
  2. 当视图处于 活动状态时可视化
  3. 能够设置颜色。 (可选,如果确实需要的话)

最低SDK版本为21,如有需要,允许提高。


我尝试了什么:

linked by @Cheticamp combined with the approach in this article 工作正常:

项目的布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item_background_active_handler">

    <include
        layout="@layout/the_actual_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?selectableItemBackground" />

</FrameLayout>

list_item_background_active_handler 看起来像这样:

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

    <item android:drawable="@color/listBackgroundActive" android:state_activated="true" />

    <!-- default -->
    <item android:drawable="@android:color/transparent" />

</selector>

这允许使用自定义颜色处理活动状态。只需在适配器中 onBindViewHolder() 中的项目视图上调用 isActivated(true)

可以用自定义波纹效果的颜色。