Как получить обратную связь от RecyclerView?

Я внедрил ReceylerView, и я не могу понять, как получить сенсорную обратную связь (эффект пульсации от него).

Вот что я сделал для onClickListener:

holder.itemView.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //start Intent } }); 

И я добавил оба кликабельных и настраиваемых для моего XML. Это то, что перерабатывает вид переработчика:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:focusable="true" android:padding="4dp" > 

В качестве фона вам нужно установить рябь:

 android:background="@drawable/ripple" 

ripple.xml:

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

Возможно, вам придется замаскировать выделение:

 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#ffa0a0a0"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="#ffa0a0a0"/> </shape> </item> </ripple> 

Это создаст простую серую пульсацию при касании (вот руководство, если вам нужно больше инструкций).

RippleDrawable был добавлен в SDK версии 21 (Lollipop). Использование Ripple, нарисованное на pre-lollipop, приведет к краху приложения. Либо используйте простой селектор на устройствах с предварительным лепестком или используйте библиотеки, которые воссоздают эффект. ( GitHub )

UPDATE: вы можете легко получить эффект пульсации с помощью этого фрагмента кода:

 android:background="?attr/selectableItemBackground" 

Или если вам не нужна маска прямоугольника:

 android:background="?attr/selectableItemBackgroundBorderless" 

Это совместимо с предустановленными устройствами и будет простой селектор. Я считаю, что это создаст легкую рябь в приложениях с темной темой и наоборот, поэтому, если вам нужна индивидуальная цветная рябь, вам все равно нужно создать рисоваемость.

В дополнение к ответу @ Longi: если вы хотите, чтобы ваш элемент RecyclerViews имел свой собственный фон и в то же время имел эффект ряби, вы можете сделать, как показано в примере ниже: recycler_view_item.xml:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/recyclerview_item_background"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="?attr/selectableItemBackgroundBorderless"> ... </LinearLayout> </LinearLayout> 

В этом примере @ drawable / recyclerview_item_background – это файл с девятью патчами, но вы можете использовать любой фон здесь.

В моем случае, когда я использовал android: background = "? Attr / selectableItemBackground" , корневая линейная компоновка элемента RecyclerView имела эффект ряби, но фоновый слой Linear Layout перекрывался, что скрывало эффект пульсации.