2013-01-13 90 views
2

使用3行和4列我試圖均勻地將所有按鈕均勻分隔,但失敗。垂直很好。需要均勻分佈的按鈕行

下面是3個不同的按鈕間隔的嘗試,其中1個爲我的3行中的每一個。第一行拉伸圖形(這是不需要的),第二行不拉伸,但沒有間距(需要圖形之間的間距),而第三行拉伸沒有任何間距。請幫助我將這些均勻分佈。其他人在這個網站上的解決方案沒有奏效。我應該嘗試使用表嗎?

視覺摘要=無伸展圖形: 我想要| x x x x | 而不是| xxxx |

<?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:id="@+id/row1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:orientation="horizontal" > 

    <View 
     android:layout_width="0dp" 
     android:layout_height="1dp" 
     android:layout_weight=".1" > 
    </View> 

    <Button 
     android:id="@+id/a1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/blanktilesml" 
     android:gravity="center_horizontal|center_vertical" 
     android:src="@drawable/clear64" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="1dp" 
     android:layout_weight=".1" > 
    </View> 

    <Button 
     android:id="@+id/a2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/blanktilesml" 
     android:gravity="center_horizontal|center_vertical" 
     android:src="@drawable/clear64" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="1dp" 
     android:layout_weight=".1" > 
    </View> 

    <Button 
     android:id="@+id/a3" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/blanktilesml" 
     android:gravity="center_horizontal|center_vertical" 
     android:src="@drawable/clear64" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="1dp" 
     android:layout_weight=".1" > 
    </View> 

    <Button 
     android:id="@+id/a4" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@drawable/blanktilesml" 
     android:gravity="center_horizontal|center_vertical" 
     android:src="@drawable/clear64" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="1dp" 
     android:layout_weight=".1" > 
    </View> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/row2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/b1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:background="@drawable/blanktilesml" 
      android:gravity="center" 
      android:src="@drawable/clear64" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/b2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:background="@drawable/blanktilesml" 
      android:gravity="center" 
      android:src="@drawable/clear64" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/b3" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:background="@drawable/blanktilesml" 
      android:gravity="center" 
      android:src="@drawable/clear64" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/b4" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:background="@drawable/blanktilesml" 
      android:gravity="center" 
      android:src="@drawable/clear64" /> 
    </LinearLayout> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/row3" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:orientation="horizontal" 
    android:weightSum="1" > 

    <Button 
     android:id="@+id/c1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".25" 
     android:background="@drawable/blanktilesml" 
     android:paddingLeft="10dp" 
     android:src="@drawable/clear64" /> 

    <Button 
     android:id="@+id/c2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".25" 
     android:background="@drawable/blanktilesml" 
     android:paddingLeft="10dp" 
     android:src="@drawable/clear64" /> 

    <Button 
     android:id="@+id/c3" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".25" 
     android:background="@drawable/blanktilesml" 
     android:paddingLeft="10dp" 
     android:src="@drawable/clear64" /> 

    <Button 
     android:id="@+id/c4" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".25" 
     android:background="@drawable/blanktilesml" 
     android:paddingLeft="10dp" 
     android:src="@drawable/clear64" /> 
</LinearLayout> 

</LinearLayout> 
+0

我不是在想你所說的簡單的方法。 –

+0

嘗試[GridLayout](http://developer.android.com/reference/android/widget/GridLayout.html)。 – Wenhui

+0

ps GridLayout是API 14或後者,我希望能夠從API 7或8工作的東西。 –

回答

7

試試這個:

<LinearLayout 
    android:id="@+id/row1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/a1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@android:drawable/arrow_up_float" 
      android:gravity="center_horizontal|center_vertical" 
      android:src="@drawable/ic_launcher" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/a2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@android:drawable/arrow_up_float" 
      android:gravity="center_horizontal|center_vertical" 
      android:src="@drawable/ic_launcher" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/a3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@android:drawable/arrow_up_float" 
      android:gravity="center_horizontal|center_vertical" 
      android:src="@drawable/ic_launcher" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/a4" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@android:drawable/arrow_up_float" 
      android:gravity="center_horizontal|center_vertical" 
      android:src="@drawable/ic_launcher" /> 
    </LinearLayout> 
</LinearLayout> 

嘗試一下本作的第一行。同樣可以爲所有的行,

所以,除非你不希望圖像被拉伸,你需要在佈局中說唱它們。這樣做你將管理間距和drawable將看起來很好。如果拉伸按鈕,那麼可拉伸對象也會相應拉伸。

0

這是我在做一個計算器項目時所做的工作。要求行中的按鈕的大小相同。您需要填充添加到您的按鈕,以滿足您的需求:

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:padding="5dp" 
     android:id="@+id/NumberPad"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/NumberRow123" 
      android:layout_weight="1"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:id="@+id/button1" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed7"/> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:id="@+id/button2" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed8"/> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:id="@+id/button3" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed9"/> 

     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/NumerRow456" 
      android:layout_weight="1"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:id="@+id/button4" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed4"/> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:id="@+id/button5" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed5"/> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:id="@+id/button6" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed6"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:id="@+id/NumberRow789"> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/button7" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed1"/> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:id="@+id/button8" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed2"/> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:id="@+id/button9" 
       android:layout_weight="1" 
       android:background="@drawable/unpressed3"/> 

     </LinearLayout> 
+0

這只是我的佈局的一部分拉。顯示和其他功能與您的答案無關。希望這有助於 – Phobos

+0

謝謝。這種類型的事情將與我添加一些間距有關,但這不是我想要的,因爲我不想伸展。我是否可以動態更改間距或是否需要針對不同大小屏幕的多個XML? –

+1

開發人員指南建議,如果您的應用要支持該尺寸的屏幕,ldpi(小),mdpi(中),hdpi(大)和xhdpi(大),則最佳做法應包含4個佈局。每種佈局涵蓋屏幕尺寸和密度的橫截面。所以提供hdpi佈局很可能適用於任何現代智能手機,而xhdpi將跨越大多數平板電腦屏幕範圍。看看這個比我能更好地解釋它的頁面。 http://developer.android.com/guide/practices/screens_support.html – Phobos