布局中的等距按钮
Posted
技术标签:
【中文标题】布局中的等距按钮【英文标题】:Evenly spaced button in Layout 【发布时间】:2011-06-14 12:43:23 【问题描述】:我正在尝试制作 4 个按钮,在 android 的纵向视图中均匀分布。
空间应根据屏幕大小上下缩放,每个按钮和边框之间的空间相等。
我尝试使用线性布局、权重和布局重力,但我似乎无法将按钮垂直居中。
这是 Android 布局的错误吗?更有可能只有我。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_
android:layout_
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight="1"
android:layout_gravity="center"
>
<Button
android:id="@+id/btn_f"
android:layout_
android:layout_
android:text="btn_f"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
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_
android:layout_
android:text="btn_b"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight="1"
android:layout_gravity="center"
>
<Button
android:id="@+id/btn_a"
android:layout_
android:layout_
android:text="btn_a"
>
</Button>
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight="1"
android:layout_gravity="center"
>
<Button
android:id="@+id/settings"
android:layout_
android:layout_
android:text="Settings"
>
</Button>
</LinearLayout>
</LinearLayout>
【问题讨论】:
【参考方案1】:试试这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical"
>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
>
<Button
android:id="@+id/btn_f"
android:layout_
android:layout_
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_
android:layout_
android:orientation="horizontal"
android:weightSum="1"
android:gravity="center">
<Button
android:id="@+id/btn_f"
android:layout_
android:layout_weight="0.5"
android:layout_
android:text="btn_f" />
</LinearLayout>
这会将按钮设置为仅占据屏幕长度的一半。
【讨论】:
这会拉伸按钮。【参考方案3】:您似乎将所有按钮包装在另一个 LinearLayout
中,而不是仅将它们保留在父 LinearLayout
中。
删除所有直接的LinearLayout
,以便android:layout_weight
生效。
实现拉伸和间距
在按钮本身中使用android:layout_width="fill_parent"
为间距指定边距
【讨论】:
这只是简单地拉伸按钮...我希望按钮很小,周围有空间...每个都位于矩形的中心 指定边距是我想避免的...您需要放置一个尺寸,即使它处于倾斜状态,每个显示器的最终效果也不相同...不是有一个像重量一样的自动方式?以上是关于布局中的等距按钮的主要内容,如果未能解决你的问题,请参考以下文章