Ich habe eine LinearLayout
, die ich so gestaltet habe, dass sie wie eine aussieht button
, und sie enthält einige Text- / ImageView-Elemente. Ich möchte das Ganze LinearLayout
wie ein Akt machen button
, insbesondere um ihm Zustände zu geben, die in a definiert sind, damit es beim Drücken einen anderen Hintergrund hat.
Gibt es einen besseren Weg, als ImageButton
die Größe des gesamten Layouts zu bestimmen und absolut zu positionieren?
android
android-layout
Jason Prado
quelle
quelle
LinearLayout
wie aToggleButton
Antworten:
Ich bin gerade auf dieses Problem gestoßen. Sie müssen das LinearLayout auf anklickbar setzen. Sie können dies entweder im XML mit tun
Oder im Code mit
Prost!
quelle
android:clickable="false"
um zu verhindern, dass es Klickereignisse blockiert.Wenn Sie das Standard-Hintergrundverhalten von Android hinzufügen möchten, um eine
Layout
Aktion wie "anklickbar" zu erstellenView
, legen Sie Folgendes festLayout
:API 11+ (reines Android):
API 7+ (Android + AppCompat Support Library):
Beliebige API:
Die obigen Antworten sind immer noch wahr, haben mir aber nicht geholfen, nur den standardmäßig gedrückten und freigegebenen UI-Status hinzuzufügen (wie
ListView
zum Beispiel in einem ).quelle
Ich habe die erste und zweite Antwort verwendet. Aber mein lineares Layout enthält Bilder und Text mit Hintergrundfarbe, daher musste ich "Hintergrund" in "Vordergrund" ändern.
lineares Layout
quelle
Zuerst möchten Sie, dass ein Selektor die verschiedenen Zustände definiert. Zum Beispiel in einer XML-Datei:
Ich habe es nicht ausprobiert, aber Sie können möglicherweise den android: background des LinearLayout auf diesen Selektor setzen und android: clickable auf true setzen, und es wird funktionieren.
Wenn dies nicht der Fall ist, können Sie zur Verwendung eines RelativeLayout wechseln und das erste Element zu einer Schaltfläche mit diesem Selektor als Hintergrund und fill_parent für seine Layoutbreite und -höhe machen. In diesem Fall verwenden Sie einfach einen normalen Button und setzen android: background auf Ihren Selektor. Sie müssen keinen Text auf Ihre Schaltfläche setzen.
quelle
Button
. Sie können überschreibenonDraw(Canvas)
, um alle speziellen Dinge zu tun, die Sie benötigen (z. B. Bilder oder Text innerhalb der Schaltfläche zeichnen).In der Anwendung, an der ich arbeite, muss ich dynamisch ein LinearLayout erstellen. In diesem Fall der Befehl
funktioniert nicht wie vorgesehen. Obwohl ich möglicherweise etwas vermisse, habe ich es geschafft, setOnTouchListener zu nutzen, um das gleiche Ergebnis zu erzielen, und ich sende den Code, falls jemand die gleichen Bedürfnisse hat.
Der folgende Code erstellt ein LinearLayout mit zwei Textansichten und runden Ecken, dessen Farbe sich beim Drücken ändert.
Erstellen Sie zunächst zwei XML-Dateien in einem zeichnbaren Ordner, eine für den normalen und eine für den gedrückten linearen Layoutstatus.
Normalzustand xml (drawable / round_edges_normal.xml)
Gedrückter Status xml (drawable / round_edges_pressed.xml). Der einzige Unterschied ist in der Farbe ...
Dann erledigt der folgende Code den Job
Globale Variable:
In
onCreate()
:quelle
Stellen Sie einfach diese Attribute ein
quelle
Fügen Sie dem linearen Layout einfach den Hintergrund attr / selectableItemBackground hinzu und machen Sie das lineare Layout anklickbar
Beispiel:
Dadurch verhält sich das lineare Layout beim Drücken wie eine Taste. :) :)
quelle
Dies war hilfreich, aber wenn Sie eine Hintergrundfarbe einfügen und das lineare Layout wie das Listenelement anklickbar machen möchten. Stellen Sie den Hintergrund mit Ihrer bevorzugten Farbe ein und setzen Sie die Vordergrundfarbe auf? Android: attr / selectableItemBackground, setzen Sie focusable true und clickable true
Beispielcode
quelle
In früheren Antworten ging es darum, wie der Standardhintergrund in einer XML-Datei festgelegt wird. Hier dasselbe im Code:
quelle