布局中的间距均匀

时间:2011-01-24 13:29:33

标签: android xml layout button

我正在尝试制作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>

3 个答案:

答案 0 :(得分: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 :(得分: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> 

这会将按钮设置为只占屏幕长度的一半。

答案 2 :(得分:1)

您似乎将所有按钮包装在另一个LinearLayout中,而不是仅将其保留在父LinearLayout中。

立即移除所有LinearLayout以使android:layout_weight生效。


实现拉伸和间距

  • 在按钮中使用android:layout_width="fill_parent"
  • 指定间距保证金