是否可以将按钮放置为layout_above =“ view1 && view2”?

时间:2019-06-29 18:09:34

标签: android xml layout

是否可以将一个按钮放置为layout_above =“两个不同的视图”

我不知道这是因为我在UI中有两个不同的视图。如果我不能将两个视图的按钮都放在layout_above之上,则一个视图将覆盖该按钮。

对此有何建议?

我尝试以编程方式进行操作,但无法正常工作。我也没有在此找到任何线索,所以我希望这里的人对此有所了解。 :)

只需一个测试代码:

<Button
    android:id="@+id/bu_myButton"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_above="@id/view1"    // This is where I wanna add two views! Like "@id/view1 || @id/view2"
    android:background="@drawable/ic_btn_myButton"
    android:visibility="visible"/>

注意:当其中一个视图可见时,其中一个视图将具有View.Visibility = GONE,并且某些主题都将具有View.Visibilty = GONE。

最诚挚的问候。

2 个答案:

答案 0 :(得分:0)

使您的布局如此-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/white">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center"
            android:layout_marginTop="@dimen/side_margin1">

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/bu_myButton"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:textSize="20dp"
                android:textStyle="bold"
                android:textColor="@android:color/white"
                android:text="1"
                android:background="#000000"/>

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:textSize="20dp"
                android:textStyle="bold"
                android:textColor="#FFFFFF"
                android:text="2"
                android:background="#000000"
                android:layout_marginTop="20dp"/>

            <android.support.v7.widget.AppCompatButton
                android:id="@+id/button3"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:textSize="20dp"
                android:textStyle="bold"
                android:textColor="@android:color/white"
                android:text="3"
                android:background="#000000"
                android:layout_marginTop="20dp"/>

        </LinearLayout>

</LinearLayout>

在这里,您的按钮bu_myButton将始终位于button1和button2上方。按照您的说明,我在这里提出3个案例-

  1. bu_myButton始终可见,button2可见(使用android:visibility =“ visible”),button3不可见(使用android:visibility =“ gone”)

  2. bu_myButton始终可见,button2不可见(使用android:visibility =“ gone”),button3可见(使用android:visibility =“ visible”)

  3. bu_myButton始终可见,button2可见(使用android:visibility =“ visible”),button3可见(使用android:visibility =“ visible”)

希望有帮助!

答案 1 :(得分:0)

这就是我解决的方法。

如果您对此解决方案有任何意见,请告诉我!这项工作已经完成,并将成为解决方案,直到我找到更大的解决方案为止!

<Button
    android:id="@+id/bu_myButton"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="10dp"
    android:layout_centerVertical="true"
    android:layout_above="@+id/viewParent"
    android:background="@drawable/ic_btn_mylocation"
    android:visibility="visible"/>

<RelativeLayout
    android:id="@+id/viewParent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:visibility="gone">

    <RelativeLayout
        android:id="@+id/view1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/view2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </RelativeLayout>
</RelativeLayout>

因此,viewParent控制按钮的显示方式。如果可见,则按钮将向上移动,否则,按钮将移动至通常位置。

此外,我还根据触发哪个按钮将view1和view2设置为可见。因此,这都是viewParent.VISIBLE和view1.VISIBLE(或view2),虽然不是很好的解决方案,但确实可以完成工作。