2011-01-24 164 views
11

我正在嘗試使4個按鈕在Android上的縱向視圖中均勻分佈。佈局中間隔均勻的按鈕

根據屏幕大小,空間應該放大和縮小,每個按鈕和邊框之間的空間量均勻。

我嘗試使用線性佈局,重量和佈局引力,但似乎我無法垂直居中按鈕。

這是Android佈局的錯誤嗎?更可能只是我。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
> 
<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:layout_weight="1" 
android:layout_gravity="center" 
> 
<Button 
android:id="@+id/btn_f" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="btn_f" 
> 
</Button> 
</LinearLayout> 
<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_weight="1" 
android:layout_gravity="center" 
> 
<Button 
android:id="@+id/btn_b" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="btn_b" 
> 
</Button> 
</LinearLayout> 
<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:layout_weight="1" 
android:layout_gravity="center" 
> 
<Button 
android:id="@+id/btn_a" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="btn_a" 
> 
</Button> 
</LinearLayout> 
<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:layout_weight="1" 
android:layout_gravity="center" 
> 
<Button 
android:id="@+id/settings" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Settings" 
> 
</Button> 
</LinearLayout> 
</LinearLayout> 

回答

20

嘗試是這樣的:

<?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="wrap_content" 
     android:layout_height="0dp" 
     android:orientation="vertical" 
     android:layout_weight="1" 
     android:gravity="center" 
     > 
     <Button 
      android:id="@+id/btn_f" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="btn_f" 
      /> 
    </LinearLayout> 
    <!-- etc --> 
</LinearLayout> 

原始佈局的變化是每個內部LinearLayout的高度都是零,重心(不是layout_gravity)的中心。這應該會導致所有內部線性佈局具有相同的高度,均勻分割​​父級高度,而無需拉伸按鈕本身。

1

你似乎是在包裝的另一個LinearLayout所有按鈕,而不是隻讓他們在父LinearLayout

刪除所有立即的LinearLayout以便android:layout_weight生效。


爲了在按鈕本身拉伸和間距

  • 使用android:layout_width="fill_parent"
  • 的間距指定邊距
+0

這只是簡單地拉伸按鈕...我希望按鈕與他們周圍的空間小...每個在矩形的中心 – Mascarpone 2011-01-24 13:44:04

+2

請參閱我的更新請 – Aliostad 2011-01-24 13:51:29

+2

指定保證金是我想避免...你需要放置一個尺寸,即使它在傾角,最終效果在每個顯示器上都不一樣...是不是有一種像重量一樣的自動方式? – Mascarpone 2011-01-24 14:10:32

3

試試這個:

<LinearLayout   
    android:layout_width="wrap_content"   
    android:layout_height="0dp"   
    android:orientation="horizontal"   
    android:weightSum="1"   
    android:gravity="center"> 
    <Button    
     android:id="@+id/btn_f"  
     android:layout_width="0dp" 
     android:layout_weight="0.5" 
     android:layout_height="wrap_content"  
     android:text="btn_f" />  
</LinearLayout> 

這將設置按鈕僅佔據屏幕長度的一半。