11

To pytanie jest w pewnym sensie kontynuacją my last question.Wyrównanie w pionie tekstu w widoku tekstowym za pomocą złożonego rysunku

Mój problem jest prawie taki sam, z tym wyjątkiem, że zamiast oddzielać obraz i tekst w różnych widokach (mianowicie ImageView i TextView) nauczyłem się, że mogę użyć atrybutu android:drawableLeft, aby ustawić obraz "dla" mojego tekstu (sugestia została mi wskazana przez Eclipse z ikoną ostrzeżenia na linii LinearLayout).

Myślałem, jedyną różnicą jest to, że zamiast ustawiania ImageView z setImageResource() metodą byłoby po prostu ustawić TextView na drawableLeft nadana metodą setCompoundDrawablesWithIntrinsicBounds(). Zamiast tego, kiedy wprowadziłem zmianę, zostałem przeniesiony z powrotem do pierwotnego problemu: tekst jest wyrównany do górnej krawędzi widoku, a nie do środka.

To właśnie moja TextView wygląda następująco:

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

Drugi View tylko separator.

... i to właśnie układ wygląda po ustawieniu powyższe atrybuty: (nie mam wystarczająco dużo reputacji, aby opublikować jeszcze zdjęć, więc tutaj jest link do niego)

(Wystarczy jasne, to tylko statyczny przykład: Mój tekst i obraz są dynamicznie ustawiane w kodzie w czasie wykonywania).

Każda pomoc jest bardzo doceniana.

+0

Dang it! Dlaczego zawsze musi być tak proste, ale nie rozumiem? @Frank N. Stein, Czy możesz wyjaśnić mi różnicę? I nie chcesz odpowiedzieć na pytanie, więc mogę to zaakceptować? –

+0

Po prostu zrobiłem. Wyjaśnienie jest proste. –

Odpowiedz

17

Zmień android:layout_gravity="left|center_vertical" na android:gravity="center_vertical".
layout_gravity służy do pozycjonowania widoku wewnątrz kontenera (układu), natomiast gravity jest określana jako Widok zawartości (czyli w tym przypadku tekst wewnątrz TextView).

+1

Dziękuję bardzo! Uwielbiam społeczność przepełnienia stosu! –

+5

Jesteśmy tutaj, aby pomagać sobie nawzajem. Może, pewnego dnia, będę miał pytanie i będziesz miał odpowiedź. –

+0

@BobMalooga lub ktokolwiek, jak zmienić grawitację ikony? Spodziewałem się, że nowa Grawitacja zadziała, ale nie wydaje się. (np. jeśli potrzebujesz ich w górnej części, aby pasowały do ​​projektu) (i utkniesz w widoku tekstowym z ciągiem złożonym, ponieważ jest to część NavigationView) – nAndroid

Powiązane problemy