【问题标题】:Evenly spaced button in Layout布局中的等距按钮
【发布时间】:2011-06-14 12:43:23
【问题描述】:

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

【问题讨论】:

    标签: android xml layout button


    【解决方案1】:

    试试这样的:

    <?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)为中心。这应该会导致所有内部线性布局具有相同的高度,平均分割父级高度,而不会拉伸按钮本身。

    【讨论】:

    • 这种方式不起作用...但是如果您将layout_gravity和gravity都指定为中心,它就起作用了....肯定android xml界面的文档记录很差.....
    • 应该是 android:layout_gravity="center" 而不是 android:gravity="center"。这里没有必要使用 android:gravity="center" 。重力标签影响其内容的定位,而 layout_gravity 影响其自身相对于其父项的定位。
    【解决方案2】:

    试试这个:

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

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

    【讨论】:

    • 这会拉伸按钮。
    【解决方案3】:

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

    删除所有直接的LinearLayout,以便android:layout_weight 生效。


    实现拉伸和间距

    • 在按钮本身中使用android:layout_width="fill_parent"
    • 为间距指定边距

    【讨论】:

    • 这只是简单地拉伸按钮...我希望按钮很小,周围有空间...每个都位于矩形的中心
    • 指定边距是我想避免的...您需要放置一个尺寸,即使它处于倾斜状态,每个显示器的最终效果也不相同...不是有一个像重量一样的自动方式?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2015-08-06
    • 2014-01-31
    相关资源
    最近更新 更多