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