2011-07-27 9 views
16

Android'de LinearLayout ile ilgili bir sorunum var. Dört düğmem var. Her düğmenin sabit bir boyutu vardır, ancak metin uzunluk olarak değişebilir.LinearLayout - Dikey olarak hizalamıyor

Benim sorunum onlar her üst kısmıyla aynı hizada olmamasıdır. Her bir bottonun içindeki metnin üst kısmı ile aynı hizada olduğu görülüyor, bu da butonun içindeki çizginin sayısına bağlı olarak değişiyor (Bkz. Resim).

Ayrıca, LinearLayout kullanmaya devam etmek istiyorum çünkü kod kullanacağı zaman veritabanına veriyi temel alan düğmeler ekleyeceğim.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
     <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> 
      <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
     </LinearLayout> 

</LinearLayout> 

http://i.imgur.com/0Kj8h.png

DÜZENLEME: YANIT (kendi soruya cevap olamaz):

Tamam, ben sadece kendim cevap buldu. LinearLayout'a veya aynı davranışı gösterebilecek diğer benzer kontrollere android: baselineAligned = "false" eklemeniz gerekiyor.

Ayrıca bunu, UI tasarımcısında "Satır Taban Çizgisi Hizalama" adlı düğmeyi kullanarak da düzeltebilirsiniz.

Yani çıkan kod şudur: Peki sizin ikinci doğrusal düzen neyin Ben u için tahmin sorun yaratıyor

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
     <LinearLayout android:baselineAligned="false" android:layout_width="match_parent" android:layout_height="match_parent"> 
      <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
     </LinearLayout> 

</LinearLayout> 
+0

Android ile ilgili ipucu için teşekkürler: baselineAligned = "false", sorunumu da çözdüm :-) –

cevap

0

, sadece,

+0

Bir başlık gibi başka şeyler olacak, ama iyi bir nokta olarak onu tutmalıyım. – darkzangel

1

onun daha iyi uyum tür türü için RelativeLayout kullanmak için o kaldırmak RelativeLayout konsepti bir kontrolün o "referans"

0

Sen TableLayout içinde bir TableRow ekleyip üste dört düğme

eklemek yerine Kişisel İkinci LinearLayout.And ait TableLayout kullanabileceği söylediği gibi
+0

Tüm öğenizi aynı hücreye koyarsanız, TableLayout aynı şeyi yapar. Ayrıca, LinearLayout ile kalmak istiyorum dediğim gibi, sonunda kod tarafından bilinmeyen bir sayıda düğme ekleyeceğim. Bu düğmede ne olacağını bilmiyorum, bu yüzden bunları akış olarak göstermenin basit bir yolunu tutmam gerekiyor. Ayrıca, ekran döndüğünde otomatik olarak ayarlanacaktır. – darkzangel