Ist es möglich, ein RecyclerView
nicht anklickbar zu machen? Ich möchte das, weil mein RecyclerView
nur ein paar kleine Symbole innerhalb einer klickbaren CardView
zeigt. Wenn also jemand auf die Symbole tippt, sollte er stattdessen nur auf den übergeordneten CardView
klicken und animieren.
Ich habe Folgendes versucht:
recyclerView.setClickable(false);
recyclerView.setFocusable(false);
RecyclerView
und machen Sie onTouchEvent(MotionEvent)
return false
. itemView.setClickable(false);
im RecyclerView
Adapter. Dies funktioniert, der Klick wird an den Eltern gesendet. Jetzt ist RecyclerView
jedoch nicht mehr scrollbar. clickable="false"
, focusable="false"
, focusableInTouchMode="false"
im XML-Verzeichnis für überhöhte Listenelemente fest. (Siehe Kommentar @Ibrahim ) recyclerView#setLayoutFrozen(true)
und itemView.setClickable(false);
auf. Das funktioniert, hat aber das gleiche Problem wie # 4. Gibt es Ideen, wie Sie die Klickereignisse von RecyclerView
auf die übergeordnete Ansicht deaktivieren und weiterleiten können? Beachten Sie, dass RecyclerView
immer noch scrollbar (horizontal) sein muss.
BEARBEITEN:
Benutzer @ c.dunlap schlug vor, OnClick-Listener auf die Symbole zu setzen und den Klick einfach auf die Klickaktion des übergeordneten Elements umzuleiten . Das würde funktionieren, aber in der Elternansicht wird keine Klick-Animation angezeigt. Und wenn jemand außerhalb von itemView klickt - aber immer noch in RecyclerView
(z. B. ItemDecoration padding) - wird der Klick nicht erkannt. Also leider ist das keine Lösung.
Meine bevorzugte Vorgehensweise, um solche Dinge zu handhaben, ist das Anhängen eines Listeners von Ihrem Adapter, der aufgerufen wird, wenn auf jedes Symbol in der Recycler-Ansicht geklickt wird. Dann kann Ihre Aktivität in geeigneter Weise reagieren. Zum Beispiel:
%Vor% Dann können Sie in Ihrer Aktivität einfach eine Instanz von MyAdapterListener erstellen und sie als Listener für den Adapter Ihrer Recycler View festlegen. Wenn iconClicked()
function ausgelöst wird, führen Sie den Code aus, der beim übergeordneten Klick ausgeführt werden würde.
Ich hatte das gleiche Problem, nachdem ich viel mehr Dinge ausprobiert hatte, benutzte ich ein weiteres Layout über Recyclerview.
%Vor%Danach kannst du das "LinearLayout" sichtbar und weggehen. Dies funktioniert 100%.
Tags und Links java android android-layout android-recyclerview