2012-02-03 20 views
5

我看到簡單按鈕的奇怪行爲,當他們的文本分裂在幾行。我有更復雜的情況,但即使是最簡單的情況也是如此。有了這個佈局:對齊線下的多行文字按鈕按鈕,如何解決?

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

結果是:buttons not in a row

按鈕下去,打倒文字的每一下一行。我希望他們排隊。這是一個android bug,以及如何解決它?

+3

它沒有錯誤,按鈕的文字基線與其他按鈕對齊。將'LinearLayout'的'baselineAligned'設置爲'false'將會解決這個問題。 – xmen 2013-12-27 03:28:17

回答

9

試試這個:

<?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。謝謝!其實android:layout_gravity =「center」對於按鈕來說似乎足夠了,不需要嵌套活動。我會等待更多的時間來尋求其他意見,但可能你的答案會得到答案。 – ggurov 2012-02-03 14:00:58

+0

android:gravity =「center」作爲佈局屬性也可以工作,其他一些條件也是如此: – ggurov 2012-02-03 14:12:23

+0

每個問題都有很多解決方案^^ – 2012-02-03 14:15:30

0

到位按鈕使用這樣

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

我希望這些按鈕的大小相同。其實我在我的真實程序中使用了android:layout_weight =「1」和android:layout_width =「0dip」,但這沒有幫助。 – ggurov 2012-02-03 13:40:49

0

使用低於2線在每一個按鈕,所有按鈕會在單行。

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

如果你想這些按鈕具有伸展整個寬度下方添加一行還到每個按鈕

android:layout_weight="1" 
+0

我知道「wrap_content」的作用,但我想要大小相同的按鈕。 – ggurov 2012-02-03 13:56:41

1

做這樣的事情

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

我希望它能工作。讓我試試..... – 2012-02-03 13:49:51

+0

Gud work.Its正確........... – 2012-02-03 13:52:51

+0

+1。這工作,但從dmytrodanylyk解決方案android:layout_gravity =「center」更簡單。 – ggurov 2012-02-03 14:05:28

2

設置的LinearLayout的android:baselineAlignedfalse

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

是的,這也適用! – ggurov 2013-12-29 11:19:11