2013-03-12 12 views
8

Stworzyłem bardzo prosty układ: „Na odkształcalne być sporządzony na początku tekstu”Dlaczego zachowanie drawableStart nie pasuje do dokumentacji systemu Android?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Button" 
      android:drawableStart="@drawable/ic_launcher" /> 

    </LinearLayout> 
</RelativeLayout> 

według the documentation for drawableStart,

Jednak, gdy działa na moim telefonie z Androidem 4.0.4, I zamiast zobaczyć:

enter image description here

Dlaczego jest taka duża różnica między ikoną a tekstem? Zgodnie z this answer,

"W systemie Android 4.0 (poziom API 14) można użyć atrybutu android: drawableStart do umieszczenia losowania na początku tekstu."

Ale to nie jest zachowanie, które obserwuję. Dlaczego atrybut nie działa?

+0

Docs powiedzieć dodano API 17 – speedynomads

Odpowiedz

1

Powodem jest fakt drawableStart rodzaju sprawia, że ​​przycisk do layoutu związek widzenia tj obrazu i TextView wszystko opakowane w przycisk „” ...

Więc co widzisz jest to, że ImageView jest umieszczony z przodu z TextView .. Jednak TextView nadal ma ustawione domyślne atrybuty layoutu tak, że rysuje je w środku w pozostawionej dla niego przestrzeni, stąd luka (zauważ, że jest wyśrodkowana w przestrzeni pozostawionej przez umieszczenie obrazu na początku tekstu)

, więc w zasadzie trzeba zastąpić atrybut grawitacji dla przycisków TextView -

android:gravity="center_vertical|center_horizontal|left"

patrz niżej powiadomienia, że ​​trzeba tylko mieć przycisk owinięty przez 1 układ drugi jest zbędny ... tj The RelativeLayout może być LinearLayout na własną rękę zbyt skoro masz tylko jeden widok w układzie!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:drawableStart="@drawable/ic_launcher" 
     android:gravity="center_vertical|center_horizontal|left" 
     android:text="@string/app_name" /> 

</RelativeLayout> 
+2

ten nie wyśrodkowuje jednak tekstu i ikony. – ZaBlanc

6

Wiele nieporozumień z początkiem i końcem.
start i Koniec w układzie XML są alternatywą dla lewo i prawo dopasować kierunek układu (LTR lub RTL).

Tak więc, gdy dokumentacja mówi:

„The odkształcalne być sporządzone na początku tekstu."

Musisz przeczytać:

"The odkształcalne być sporządzone na początku widoku zgodnie z kierunkiem układu"

Powiązane problemy