이미 답변했듯이 가장 간단한 해결책은 다음 중 하나를 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
이 이미했기 때문에 눌림 상태에 대한 강조 색상으로,하지만 당신은 당신이 원하는 색상을 정의 할 수 있습니다.
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
이 질문 에 a가있는 경우이보다 일반적인 질문과 관련이없는 특정 측면 이 있습니다.