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.
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.
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.
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.
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.
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 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.