我遇到了一个看似奇怪的问题,当视图包含在父视图组中时,视图显示在另一个具有较低高程的视图下方。下面是一个代码片段,其中包含我可以制作的最简单的示例。视图(正方形)具有完全相同的高度。
<?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 Studio中布局检查器中的两个方块。唯一的区别是x位置(和ID)。
为了简化,我的目标是:
答案 0 :(得分:0)
您只需将指定的高程切换为根布局:
<?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"
android:elevation="8dp"
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"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
答案 1 :(得分:0)
这已经很老了,但是我遇到了这个问题。设置android:translationZ
等于android:elevation
的值对我有用!