2011-01-24 114 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> 

这将设置按钮仅占据屏幕长度的一半。