11

Diese Frage ist in gewisser Weise eine Fortsetzung von my last question.Wie Text in einem TextView mit Compound Drawable vertikal ausgerichtet

Mein Problem ist jetzt ziemlich genau das Gleiche, außer dass ich das Bild und den Text in verschiedenen Ansichten (nämlich ImageView und TextView) getrennt habe und das Attribut android:drawableLeft verwende, um ein Bild "für" meinen Text zu setzen Der Vorschlag wurde von Eclipse mit einem Warnsymbol in der LinearLayout-Zeile angezeigt.

dachte ich, der einzige Unterschied, dass statt der Image mit setImageResource() Verfahren zur Einstellung würde ich einfach drawableLeft zugeschrieben das Textview ist mit dem setCompoundDrawablesWithIntrinsicBounds() Verfahren eingestellt würden. Wenn ich die Änderung vorgenommen habe, wurde ich stattdessen zu meinem ursprünglichen Problem zurückversetzt: Der Text wird an der oberen Kante der Ansicht und nicht an der Mitte ausgerichtet. Diese

ist, was meine Textview wie folgt aussieht:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    >  
    <TextView 
     android:id="@+id/account_login" 
     android:layout_marginTop="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:drawableLeft="@drawable/pm_gmail" 
     android:drawablePadding="8dp" 
     android:text="[email protected]" 
     android:paddingLeft="16dp" 
     android:layout_gravity="left|center_vertical" /> 

    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dip" 
     android:layout_centerVertical="true" 
     android:layout_below="@id/account_login" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginTop="5dp" 
     android:background="#DDDDDD" /> 

</RelativeLayout> 

Der zweite View ist nur ein Separator.

... und das ist, was das Layout aussieht, nachdem die oben genannten Attribute setzen: (I noch nicht genug Ruf hat, um Bilder zu veröffentlichen, also hier ist die link es)

(Just zu sei klar, das ist nur ein statisches Beispiel. Mein Text und Bild werden beide zur Laufzeit dynamisch im Code gesetzt.

Jede Hilfe wird sehr geschätzt.

+0

Dang it! Warum muss es immer so einfach sein, aber ich verstehe es nicht? @Frank N. Stein, Macht es Ihnen etwas aus, mir den Unterschied zu erklären? Und willst du die Frage nicht beantworten, damit ich sie annehmen kann? –

+0

Habe gerade getan. Die Erklärung ist VEEEEERY einfach. –

Antwort

17

Ändern Sie android:layout_gravity="left|center_vertical" zu android:gravity="center_vertical".
layout_gravity ist für die Positionierung einer Ansicht innerhalb eines Containers (Layout), während gravity wird der Inhalt anzeigen (das ist in diesem Fall der Text in der TextView).

+1

Vielen Dank! Ich liebe die Stack Overflow Community! –

+5

Wir sind hier, um einander zu helfen. Vielleicht werde ich eines Tages eine Frage haben und du wirst die Antwort haben. –

+0

@BobMalooga oder wer, wie ändern Sie die Schwerkraft des Symbols? Ich habe erwartet, dass foregroundGravity funktioniert, aber es scheint nicht so zu sein. (zB wenn Sie beide ganz oben benötigen, um mit dem Design übereinzustimmen) (und Sie bleiben bei Textview mit Compound Drawable hängen, da es Teil von NavigationView ist) – nAndroid

Verwandte Themen