Макет перекрывается кнопками. Как скрыть кнопки?

Я учился пару недель и боролся с макетами в этой ситуации. Это всего лишь небольшой проект, предназначенный для обучения. Кнопка upg вызывает LinearLayout ShopL как всплывающее окно, но оно перекрывается. Обычно я хочу, чтобы красные кнопки были позади (скрыты от) синего Linearlayout (см. Рисунок).

<android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:background = "@android:color/background_dark"
    tools:context = "com.example.daniela.test003.MainActivity"
    tools:layout_editor_absoluteY = "81dp">

    <TextView
        android:id = "@+id/Total"
        android:layout_width = "287dp"
        android:layout_height = "25dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        android:text = "Total Geld"
        android:textColor = "@android:color/holo_green_dark"
        android:textSize = "24sp"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent" />

    <TextView
        android:id = "@+id/perClickShower"
        android:layout_width = "188dp"
        android:layout_height = "25dp"
        android:layout_marginBottom = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        android:text = "perClickShower"
        android:textColor = "@android:color/holo_green_dark"
        android:textSize = "18sp"
        app:layout_constraintBottom_toTopOf = "@+id/perSecondShower"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.262"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/Total"
        app:layout_constraintVertical_bias = "0.85" />

    <TextView
        android:id = "@+id/perSecondShower"
        android:layout_width = "188dp"
        android:layout_height = "0dp"
        android:layout_marginBottom = "372dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:text = "perSecondShower"
        android:textColor = "@android:color/holo_green_dark"
        android:textSize = "18sp"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.262"
        app:layout_constraintStart_toStartOf = "parent" />

    <Button
        android:id = "@+id/btn1"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginBottom = "16dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:background = "@android:color/holo_red_dark"
        android:text = "btn1"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent" />

    <Button
        android:id = "@+id/upg"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginBottom = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        android:background = "@android:color/holo_red_dark"
        android:text = "upg"
        app:layout_constraintBottom_toTopOf = "@+id/btn1"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.16"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/perSecondShower"
        app:layout_constraintVertical_bias = "0.892" />

    <LinearLayout
        android:id = "@+id/ShopL"
        android:layout_width = "300dp"
        android:layout_height = "450dp"
        android:layout_marginBottom = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        android:background = "@android:color/holo_blue_dark"
        android:visibility = "visible"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent">

        <Button
            android:id = "@+id/button4"
            android:layout_width = "wrap_content"
            android:layout_height = "81dp"
            android:layout_marginTop = "159dp"
            android:layout_weight = "0"
            android:baselineAligned = "false"

            android:text = "Button" />
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

Макет перекрывается кнопками. Как скрыть кнопки?

0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы запустите этот макет на нескольких телефонах, вы заметите, что «плохое» поведение (кнопки появляются, даже если они «покрыты» линейным макетом) произойдет только на телефонах с Android Lollipop или новее.

В Lollipop введена концепция «возвышения», и все кнопки на Lollipop + по умолчанию имеют высоту. Нажатие на одну из этих кнопок также увеличивает высоту добавляет на время нажатия (поэтому тень, отбрасываемая кнопкой на фон, кажется, увеличивается).

Подъем работает так же, как и в реальном мире; объекты с более высокой высотой появляются над объектами с более низкой высотой. Ваша линейная компоновка не определяет значение высоты, а линейные компоновки не имеют отметки по умолчанию, поэтому ее высота равна 0dp. Кнопка в состоянии покоя по умолчанию имеет высоту 2dp. Пока высота кнопки больше, чем у линейного макета, кнопка будет отображаться «впереди» линейного макета.

Простым решением было бы добавить большую высоту к вашей линейной компоновке:

android:elevation = "12dp"

У этого могут быть и другие побочные эффекты, но, возможно, это просто сработает для вас.

Другие вопросы по теме