2012-02-03 5 views
5

Vedo uno strano comportamento di pulsanti semplici, quando il loro testo si divide su più righe. Ce l'ho in una situazione più complessa, ma anche nel caso più semplice. Con questo layout:I pulsanti con testo multilinea affondano sotto la linea di allineamento, come risolverlo?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent"> 

<Button android:layout_width="100dip" android:layout_height="70dip" android:text="111" /> 
<Button android:layout_width="100dip" android:layout_height="70dip" android:text="111 222 333" /> 
<Button android:layout_width="100dip" android:layout_height="70dip" android:text="111 222 333 444 555 666" /> 
<Button android:layout_width="100dip" android:layout_height="70dip" android:text="111" /> 
</LinearLayout> 

il risultato è: buttons not in a row

pulsanti vanno giù e giù con ogni riga di testo successiva. Li voglio in fila. È un bug di Android e come risolverlo?

+3

Non è un bug, la linea di base del testo dei pulsanti è allineata con altri pulsanti. L'impostazione 'baselineAligned' su' false' di 'LinearLayout' risolverà questo problema. – xmen

risposta

9

Prova questo:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:layout_width="100dip" 
      android:layout_height="70dip" 
      android:layout_gravity="center" 
      android:text="111" /> 

     <Button 
      android:layout_width="100dip" 
      android:layout_height="70dip" 
      android:layout_gravity="center" 
      android:text="111 222 333" /> 

     <Button 
      android:layout_width="100dip" 
      android:layout_height="70dip" 
      android:layout_gravity="center" 
      android:text="111 222 333 444 555 666" /> 

     <Button 
      android:layout_width="100dip" 
      android:layout_height="70dip" 
      android:layout_gravity="center" 
      android:text="111" /> 
    </LinearLayout> 

</LinearLayout> 
+3

+1. Grazie! In realtà Android: layout_gravity = "center" per i pulsanti sembra essere abbastanza, non c'è bisogno di attività nidificate. Aspetterò qualche ora in più per altre opinioni, ma probabilmente la tua risposta otterrà i punti. – ggurov

+0

android: gravità = "centro" come anche la proprietà del layout, con alcune altre condizioni come: ggurov

+0

Ogni problema ha molti soluzioni ^^ –

0

al posto dei pulsanti usano come questo

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="111" /> 
+0

Voglio che questi pulsanti abbiano la stessa dimensione. In realtà io uso Android: layout_weight = "1" e android: layout_width = "0dip" nel mio programma reale, ma questo non aiuta. – ggurov

0

Usa sotto 2 linee in ogni pulsante, quindi tutti i pulsanti verranno in un'unica linea.

android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

Se si desidera che questi tasti deve allungare l'intera larghezza aggiungere sotto la linea anche ad ogni tasto

android:layout_weight="1" 
+0

So cosa fa "wrap_content", ma voglio i pulsanti con le stesse dimensioni. – ggurov

1

fare qualcosa di simile

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<Button 
    android:id="@+id/btn1" 
    android:layout_width="100dip" 
    android:layout_height="70dip" 
    android:text="111" /> 

<Button 
    android:layout_toRightOf="@+id/btn1" 
    android:id="@+id/btn2" 
    android:layout_width="100dip" 
    android:layout_height="70dip" 
    android:text="111 222 333" /> 

<Button 
    android:layout_toRightOf="@+id/btn2" 
    android:id="@+id/btn3" 
    android:layout_width="100dip" 
    android:layout_height="70dip" 
    android:text="111 222 333 444 555 666" /> 

<Button 
      android:layout_toRightOf="@+id/btn3" 
    android:id="@+id/btn4" 
    android:layout_width="100dip" 
    android:layout_height="70dip" 
    android:text="111" /> 

</RelativeLayout> 
+0

Spero che funzioni. Lasciatemi provare ... –

+0

Gud work.Its Correct ........... –

+0

+1. Funziona, ma android: layout_gravity = "center" dalla soluzione dmytrodanylyk è più semplice. – ggurov

2

Set di LinearLayout android:baselineAligned per false

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" android:layout_height="match_parent" 
android:baselineAligned="false"> 
+0

Sì, anche questo funziona! – ggurov