Android - 如何在使用带权重的 LinearLayout 时删除不需要的间隙

Android - How to remove unwanted gaps when using LinearLayout with weights

我有一个包含 2 个水平 LinearLayout 的垂直 LinearLayout。在垂直 LL 下方,我有另一个水平 LL。由于我使用的是 weight 属性,所以我将布局的高度或宽度属性设置为 0dp。

代码-

   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.2"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.5"
            android:orientation="horizontal">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.25"
                android:id="@+id/buttonBack"
                android:text="back" />

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.25"
                android:id="@+id/buttonRefresh"
                android:text="refresh" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.5"
            android:orientation="horizontal">

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.25"
                android:id="@+id/buttonScore1"
                android:text="Score: " />

            <Button
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.25"
                android:id="@+id/buttonScore2"
                android:text="Score: " />

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.1"
        android:orientation="horizontal">

        <Button
            android:id="@+id/buttonPlayer1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:text="P1"
        />

        <Button
            android:id="@+id/buttonPlayer2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:text="P2" />

    </LinearLayout>

这是它的样子 -

如您所见,元素之间存在不需要的间隙(和圆角)。如何删除空格?

使用此代码我刚刚为您的线性布局添加了背景

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.2"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.5"
        android:background="@color/purple_500"
        android:orientation="horizontal">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:id="@+id/buttonBack"
            android:text="back" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:id="@+id/buttonRefresh"
            android:text="refresh" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.25"
        android:layout_marginTop="10dp"
        android:background="@color/purple_500"
        android:orientation="horizontal">

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:id="@+id/buttonScore1"
            android:text="Score: " />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:id="@+id/buttonScore2"
            android:text="Score: " />

    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.1"
    android:layout_marginTop="10dp"
    android:background="@color/purple_500"
    android:orientation="horizontal">

    <Button
        android:id="@+id/buttonPlayer1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.25"
        android:text="P1"
        />

    <Button
        android:id="@+id/buttonPlayer2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.25"
        android:text="P2" />

</LinearLayout>

将所有按钮替换为 material 个按钮

app:cornerRadius="0dp" 这将删除角落

并且android:background="#000000"这是为了将按钮展开到全高

<com.google.android.material.button.MaterialButton
android:layout_width="0dp"
app:cornerRadius="0dp" //
android:layout_height="match_parent"
android:layout_weight="0.25"
android:background="#000000"
android:id="@+id/buttonRefresh"
android:text="refresh" />

像这样?

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_gravity="center"
        android:layout_weight="1.0">

        <Button
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:text="BACK"
            android:padding="1px"
            android:layout_weight="1.0"
            android:id="@+id/buttonBack"/>

        <Button
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:text="SCORE:"
            android:padding="1px"
            android:layout_weight="1.0"
            android:id="@+id/buttonScore1"/>

        <Button
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:text="P1"
            android:padding="1px"
            android:layout_weight="1.0"
            android:id="@+id/buttonPlayer1"/>

    </LinearLayout>

    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_gravity="center"
        android:layout_weight="1.0">

        <Button
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:text="REFRESH"
            android:padding="1px"
            android:layout_weight="1.0"
            android:id="@+id/buttonRefresh"/>

        <Button
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:text="SCORE:"
            android:padding="1px"
            android:layout_weight="1.0"
            android:id="@+id/buttonScore2"/>

        <Button
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:text="P2"
            android:padding="1px"
            android:layout_weight="1.0"
            android:id="@+id/buttonPlayer2"/>

    </LinearLayout>

</LinearLayout>

我为每个 Button 添加了 1px 的填充,因为 Android 在 Button.

中呈现文本时存在错误