Можно ли разместить кнопку как layout_above = "view1 && view2"? - PullRequest
0 голосов
/ 29 июня 2019

Можно ли разместить, например, кнопку как layout_above = "два разных вида"

Причина, по которой я задаюсь вопросом, заключается в том, что у меня есть два разных вида, которые скользят вверх в пользовательском интерфейсе.Если я не могу поставить кнопку как 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 голосов
/ 30 июня 2019

Вот как я это решил.

Если у вас есть какие-либо предложения по этому решению, пожалуйста, дайте мне знать!Это сработало и будет решением до тех пор, пока я не найду большее!

<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), не красивое решение, но оно выполняет свою работу.

0 голосов
/ 29 июня 2019

Сделайте ваш макет следующим образом -

<?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= "ушел")

  2. bu_myButton всегда видим, button2 невидим (используйте android: visibility = "ушел"), button3 видим (используйте android: visibility = "visible")

  3. bu_myButton всегда виден, button2 виден (используйте android: visibility = "visible"), button3 виден (используйте android: visibility = "visible")

Надеюсь, это поможет!

...