Я столкнулся с, казалось бы, странной проблемой, когда представление отображается под другим представлением с более низким возвышением, когда представление содержится в родительской группе представлений.Ниже приведен фрагмент кода с самым простым примером, который я могу сделать.Виды (квадраты) имеют одинаковую высоту.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<!-- Elevation working properly -->
<View
android:id="@+id/dark_overlay_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:alpha="0.3"
android:background="@android:color/black"
android:elevation="7dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<!-- Elevation working properly -->
<View
android:id="@+id/view_displayed_above_overlay"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#C8F8C8"
android:elevation="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<!-- Here's the trouble -->
<android.support.constraint.ConstraintLayout
android:id="@+id/troublesome_parent"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:id="@+id/view_that_wont_display_above_overlay"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#C8F8C8"
android:elevation="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
. Отображается как следующее изображение:
Изображение экрана Android с 2 зелеными квадратами с одинаковой высотой.Тем не менее, один из квадратов отображается ниже a с более низкой отметкой.
Я попытался изменить тип макета как корня, так и родителя отображаемого представления, не имеет значения.
Я понимаю, что высота унаследована от непосредственного родителя вида, но не следует ли отображать вид выше другого, если он имеет более высокую высоту?
Я также сравнил два квадрата вИнспектор макетов в Android Studio.Единственными отличиями были x-позиции (и идентификаторы).
Чтобы упростить, моя цель состоит в том, чтобы:
- ViewGroup без возвышения.
- Child-представление этой ViewGroup с высотой 8dp
- View (родственный элемент ViewGroup) с высотой 7dp, отображаемой под дочерним представлением.