Ich habe ein sehr einfaches Layout erstellt:
%Vor% Laut der Dokumentation für drawableStart
,
"Das Zeichen, das an den Anfang des Textes gezogen werden soll."
Wenn ich jedoch auf meinem Android 4.0.4-Telefon laufe, sehe ich stattdessen Folgendes:
Warum gibt es eine so große Lücke zwischen dem Icon und dem Text? Laut diese Antwort ,
"Mit Android 4.0 (API-Stufe 14) können Sie das Attribut" android: drawableStart "verwenden, um am Anfang des Textes ein Zeichen einzufügen."
Aber das ist nicht das Verhalten, das ich beobachte. Warum funktioniert das Attribut nicht?
Viele Missverständnisse mit Anfang und Ende.
Start und Ende in Layout-XML sind eine Alternative zu links und rechts , um die Ausrichtung des Layouts (LTR oder RTL) anzupassen
Also, wenn Dokumentation sagt:
"Das Zeichen, das an den Anfang des Textes gezogen werden soll."
Sie müssen lesen:
"Das Zeichen, das nach Layout-Richtung zum Anfang der Ansicht gezogen werden soll"
Der Grund ist, weil drawableStart Art der Schaltfläche in einem zusammengesetzten Layout, d. h. Bildansicht und TextView alles in einem "Button" verpackt ...
Sie sehen also, dass das ImageView vor der Textansicht platziert wird. Allerdings hat das TextView seine Standard-Layoutattribute so eingestellt, dass es zentriert in dem dafür vorgesehenen Raum gezeichnet wird in den Raum links, indem das Bild an den Anfang des Textes gesetzt wird)
Sie müssen also das Gravitationsattribut für die Schaltflächen TextView -
grundsätzlich überschreiben android:gravity="center_vertical|center_horizontal|left"
sehen Sie unten, dass Sie nur die Schaltfläche um 1 Layout gewickelt haben müssen, die andere ist redundant ... Das RelativeLayout könnte auch ein LinearLayout sein, da Sie nur eine Ansicht im Layout haben!
%Vor%