18 Stimmen

Android-Reihe wird mit Schaltfläche nicht anklickbar

Ich habe eine ListView, in der jede Zeile ein Button im Zeilenlayout hat. Dies scheint jedoch dazu zu führen, dass die Zeile selbst nicht anklickbar ist. Wie kann ich sowohl den Button als auch die Zeile anklickbar machen?

Danke.

25voto

jqpubliq Punkte 11796

Sie müssen itemsCanFocus in der Liste wie folgt festlegen:

    mList.setItemsCanFocus(true);

Um die Schaltfläche klickbar zu machen. Dann müssen Sie Ihren eigenen Adapter verwenden und in getView eine Ansicht zurückgeben, die klickbar und fokussierbar ist. Sie verlieren auch die Standard-Hervorhebungszustände, daher müssen Sie sie mit der Hintergrundressource wieder einsetzen. Also tun Sie dies:

    view.setClickable(true);
    view.setFocusable(true);
    view.setBackgroundResource(android.R.drawable.menuitem_background);

zu Ihrer Ansicht, bevor Sie Ihre Ansicht zurückgeben.

3 Stimmen

Vielen Dank. Außerdem musste ich einen OnClickListener zum View hinzufügen.

1 Stimmen

Hast du eine Idee, wie man die Hervorhebungsstatus der Holo-Themen bekommen kann, die standardmäßig in Listen verwendet werden? menuitem_background ist orange, aber der Standardzustand sollte bläulich sein.

6 Stimmen

Dies funktioniert nicht. Der AdapterView.OnItemClickListener wird niemals aufgerufen.

9voto

Matteo Danieli Punkte 223

Immer wenn ich Beiträge über die android:focusable und android:clickable Attribute sehe, sehe ich immer, dass sie gleichzeitig auf den gleichen Wert gesetzt werden. Ich dachte, es muss einen Grund geben, wenn es zwei separate Attribute sind, anstatt eines.

Es stellt sich heraus, dass es einen viel besseren Weg gibt, um das gewünschte Verhalten zu erreichen:

android:focusable="false" 

oder

yourButton.setFocusable(false)

auf den Button in Ihrer View zu setzen. Sobald Sie das getan haben, können Sie sowohl einen OnClickListener auf den Button setzen als auch ein Klick auf die Zeile wird die onListItemClick() Methode in Ihrem OnItemClickListener auslösen.

2voto

βhargavḯ Punkte 9694

Versuchen Sie, Ihre Widgets in XML auf nicht klickbar und nicht fokussierbar einzustellen, das Klicken auf Elemente funktioniert normal und auch das Drücken auf die Schaltfläche funktioniert normal.

android:clickable="false" 
android:focusable="false"

I hope this helps.

0voto

Cheryl Simon Punkte 45901

Leider glaube ich nicht, dass das möglich ist. Deine ListView-Zeile kann entweder fokussierbare Widgets wie einen Button haben oder klickbar sein, aber nicht beides. Siehe Link.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X