两个宽度相等的按钮,但当一个是GONE时,伸展到父级的宽度 - Android

时间:2015-11-11 12:09:28

标签: android xml layout

这应该很简单,但我真的卡住了。 所以这是我的布局:

 __________________________
 | layout                 | 
 |[Button A ] [ Button B ]|
 |________________________|

然后当你制作Button A Visibility.GONE时我需要这个:

 __________________________
 | layout                 | 
 |[      Button B        ]|
 |________________________|

或按钮B Visibility.GONE:

 __________________________
 | layout                 | 
 |[      Button A        ]|
 |________________________|

我尝试了一切。任何类型的布局都可以,它不必是相对的或线性的或任何东西。

提前致谢。

1 个答案:

答案 0 :(得分:3)

因此,使用“线性布局”将每个视图的权重设置为1,方向水平。不要设置weightSum
您可以将可见性设置为xml或myView.setVisibility(View.GONE);

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    tools:context="de.project.amy.amyatanim.DataFragment">


    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="New Button 1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="New Button 2" />


</LinearLayout>

使用RelativeLayout有点棘手。在这里,您必须将空间和button4可见性设置为已消失,并且还要设置按钮5的宽度以匹配父级,所有这些都是以编程方式进行的,但并非不可能。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button4"
        android:id="@+id/button4"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_toLeftOf="@+id/space"/>

    <View
        android:id="@+id/space"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="New Button5"
        android:id="@+id/button5"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_toRightOf="@+id/space"/>
</RelativeLayout>