ตามที่ตอบไปแล้ววิธีแก้ปัญหาที่ง่ายที่สุดคือเพิ่มสิ่งใดสิ่งหนึ่งต่อไปนี้เป็นRecyclerViewพื้นหลังของแถวของคุณ:
- android:background="?android:attr/selectableItemBackground"
- android:background="?attr/selectableItemBackground"
อย่างไรก็ตามหากคุณกำลังประสบปัญหากับวิธีนี้หรือหากคุณต้องการควบคุมสีให้ละเอียดขึ้นคุณสามารถทำสิ่งต่อไปนี้ได้
เอฟเฟกต์ระลอกที่กำหนดเอง
คำตอบนี้จะเริ่มต้นด้วยการที่เรียบง่ายเช่น Android RecyclerView นี้ จะมีลักษณะดังภาพต่อไปนี้

เพิ่มตัวเลือกสำหรับอุปกรณ์ก่อน API 21
ก่อน API 21 (Android 5.0 Lollipop) การคลิกRecyclerViewรายการเพิ่งเปลี่ยนสีพื้นหลัง (ไม่มีเอฟเฟกต์การกระเพื่อม) นั่นคือสิ่งที่เรากำลังจะทำเช่นกัน หากคุณยังคงมีผู้ใช้อยู่กับอุปกรณ์เหล่านั้นพวกเขาคุ้นเคยกับพฤติกรรมดังกล่าวดังนั้นเราจะไม่กังวลกับพวกเขามากเกินไป (แน่นอนว่าหากคุณต้องการเอฟเฟกต์ระลอกคลื่นสำหรับพวกเขาจริงๆคุณสามารถใช้ไลบรารีที่กำหนดเองได้)
คลิกขวาที่res/drawableโฟลเดอร์ของคุณแล้วเลือกใหม่> ไฟล์ทรัพยากรที่วาดได้ เรียกมันcustom_ripple. คลิกตกลงและวางรหัสต่อไปนี้
custom_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorAccent" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</selector>
ฉันใช้colorAccentเป็นสีไฮไลต์สำหรับสถานะกดเนื่องจากมีอยู่แล้ว แต่คุณสามารถกำหนดสีที่คุณต้องการได้
เพิ่ม Ripple Effect สำหรับอุปกรณ์ API 21+
คลิกขวาที่res/drawableโฟลเดอร์ของคุณแล้วเลือกใหม่> ไฟล์ทรัพยากรที่วาดได้ เรียกcustom_rippleอีกอย่าง. อย่าคลิกตกลง แต่คราวนี้ จากที่มีอยู่รอบคัดเลือกรายการเลือกรุ่นแล้วคลิก>>ปุ่มและเขียน21สำหรับระดับแพลตฟอร์ม API ตอนนี้คลิกตกลงและวางรหัสต่อไปนี้
v21 / custom_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/colorAccent">
    <item
        android:id="@android:id/mask"
        android:drawable="@android:color/white" />
</ripple>
อีกครั้งฉันใช้colorAccentสำหรับสีระลอกเพราะมีให้เลือก แต่คุณสามารถใช้สีอะไรก็ได้ที่คุณต้องการ มาสก์จะ จำกัด เอฟเฟกต์ระลอกคลื่นให้อยู่ในเค้าโครงแถวเท่านั้น เห็นได้ชัดว่าสีของหน้ากากไม่สำคัญดังนั้นฉันจึงใช้สีขาวขุ่น
ตั้งเป็นพื้นหลัง
ในเค้าโครงรูทของรายการ RecyclerView ของคุณให้ตั้งค่าพื้นหลังเป็นระลอกที่กำหนดเองที่เราสร้างขึ้น
android:background="@drawable/custom_ripple"
ในโครงการตัวอย่างที่เราเริ่มต้นมีลักษณะดังนี้:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="@drawable/custom_ripple"
    android:padding="10dp">
    <TextView
        android:id="@+id/tvAnimalName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>
</LinearLayout>
เสร็จแล้ว
แค่นั้นแหละ. คุณควรจะดำเนินโครงการได้แล้ว ขอบคุณสำหรับคำตอบนี้และวิดีโอ YouTube นี้สำหรับความช่วยเหลือ
               
              
CardViewคำถามนั้นมากกว่าที่จะไม่เกี่ยวข้องกับคำถามทั่วไปนี้