Come già risposto, la soluzione più semplice è semplicemente aggiungere uno dei seguenti come RecyclerView
sfondo della riga:
android:background="?android:attr/selectableItemBackground"
android:background="?attr/selectableItemBackground"
Tuttavia, se si verificano problemi con questo metodo o se si desidera un controllo più preciso sui colori, è possibile eseguire le seguenti operazioni.
Effetto ondulazione personalizzato
Questa risposta inizia con questo semplice esempio di Android RecyclerView . Assomiglierà alla seguente immagine.
Aggiungi selettore per dispositivi pre API 21
Prima dell'API 21 (Android 5.0 Lollipop), facendo clic su un RecyclerView
elemento ne cambiava il colore di sfondo (nessun effetto a catena). Questo è anche quello che faremo. Se hai ancora utenti con quei dispositivi, sono abituati a quel comportamento, quindi non ci preoccuperemo troppo di loro. (Ovviamente, se vuoi davvero l'effetto a catena anche per loro, potresti usare una libreria personalizzata .)
Fare clic con il pulsante destro del mouse sulla res/drawable
cartella e scegliere Nuovo> File di risorse disegnabili . Chiamalo custom_ripple
. Fare clic su OK e incollare il codice seguente.
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>
Ho usato colorAccent
come colore di evidenziazione per lo stato premuto perché era già disponibile, ma puoi definire il colore che desideri.
Aggiungi effetto a catena per dispositivi API 21+
Fare clic con il pulsante destro del mouse sulla res/drawable
cartella e scegliere Nuovo> File di risorse disegnabili . Chiamalo di custom_ripple
nuovo. Tuttavia, questa volta non fare clic su OK. Dall'elenco Qualificatori disponibili scegli Versione , quindi fai clic sul pulsante >> e scrivi 21
per il livello API della piattaforma . Ora fai clic su OK e incolla il codice seguente.
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>
Ancora una volta, ho usato colorAccent
per il colore ondulato perché era disponibile, ma puoi usare qualsiasi colore tu voglia. La maschera limita l'effetto a catena solo al layout delle righe. Il colore della maschera apparentemente non ha importanza, quindi ho usato solo un bianco opaco.
Imposta come sfondo
Nel layout radice del tuo elemento RecyclerView, imposta lo sfondo sul ripple personalizzato che abbiamo creato.
android:background="@drawable/custom_ripple"
Nel progetto di esempio con cui abbiamo iniziato, assomiglia a questo:
<?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>
Finito
Questo è tutto. Dovresti essere in grado di eseguire il tuo progetto ora. Grazie a questa risposta e questo video di YouTube per aiuto.
CardView
in quella domanda che non riguardano questa domanda più generale.