Wygląda ustawiania układu artykuł RecyclerView do klikania = „true”, zużywają kilka zdarzeń dotykowych całkowicie, szczególnie MotionEvent.ACTION_DOWN
(ACTION_MOVE i ACTION_UP potem pracują):Android: RecyclerView poz gdy ustawiono klikalne bloków onTouch wydarzeń
item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/demo_item_container"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"> <-- this what breaks touch event ACTION_DOWN
....
</LinearLayout>
Mając bardzo podstawową konfigurację RecyclerView w onCreate():
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list);
... //Standard recyclerView init stuff
//Please note that this is NOT recyclerView.addOnItemTouchListener()
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.d("", "TOUCH --- " + motionEvent.getActionMasked());
//Will never get here ACTION_DOWN when item set to android:clickable="true"
return false;
}
});
Czy to zamierzone zachowanie lub błąd w RecyclerView powoduje, że nadal jest to podgląd?
PS. Chcę, aby to było klikalne, jak na dokumenty, aby reagować na wciśnięty stan i mają wpływ na kliknięcie. Gdy ustawione na false ACTION_DOWN działa poprawnie, ale wciśnięty stan nie jest wyzwalany, a wybórBackground nie ma żadnego efektu.
Spróbuj ustawić 'android: focusable =" true "', Nie testowałem tego, dlatego nie dostarczam to odpowiedź, ale dla mnie ACTION_DOWN wydaje się wydarzeniem związanym z fokusem. – RyanJohnstone
@Iija, czy masz jakieś rozwiązanie? Utknąłem na tym samym problemie już od kilku dni. – Manu
@Manu, skończyło się na tym, że to zamierzone zachowanie. Powinieneś być w stanie osiągnąć to, co chcesz, używając zamiast tego recyclerView.addOnItemTouchListener() .... –