XML布局中相对于父级大小的按钮大小?

ef2*_*011 4 android android-layout

是否可以在XML布局文件中设置按钮的大小,以便一方面不占用父级(屏幕)的整个宽度,另一方面,不使用绝对像素值?

为了更好地解释我的问题,以下代码段中的问题是"match_parent"占用整个宽度:

<Button android:id="@+id/btn_1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="16px"
    android:paddingLeft="16px"
    android:paddingRight="16px"
    android:paddingTop="16px"
    android:text="@string/first_button" />
Run Code Online (Sandbox Code Playgroud)

我知道可以在运行时控制大小,但我很想知道这是否也可以在XML文件中使用.

有类似的东西android:layout_width="match_HALF_parent"吗?

Mar*_*son 6

布局权重可以做到这一点.基本上你需要做的是在父布局中设置weightSum,然后在子设置中设置layout_weight:

<?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:weightSum="2" android:orientation="horizontal">
    <Button android:id="@+id/btn_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingBottom="16px"
        android:paddingLeft="16px"
        android:paddingRight="16px"
        android:paddingTop="16px"
        android:text="@string/first_button" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

父母的weightSum和孩子的体重之间的关系决定了孩子的宽度:在这种情况下,它将是一半; 如果我们要将父母的体重总和增加到3,那么孩子将是其父母宽度的三分之一.

我在博客上写过这篇文章.