Ответ 1

Вы можете нарисовать собственную тень чуть выше нижней панели, используя простой вид и его фон:

<View
    android:layout_width="match_parent"
    android:layout_height="4dp"
    android:layout_above="@id/bottom_bar"
    android:background="@drawable/shadow"/>

вытяжка/shadow.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:startColor="#1F000000"
        android:endColor="@android:color/transparent"
        android:angle="90" />
</shape>

Кроме того, при использовании этого подхода нет проблем с совместимостью.

Ответ 2

Вы можете использовать высоту, чтобы добавить тени в любое представление

<TextView
android:id="@+id/myview"
...
android:elevation="2dp"

android:background="@drawable/myrect" />

Обратитесь this для получения дополнительной информации

Ответ 3

Для тех, кто использует CoordinatorLayout с нижней панелью навигации (или BottomAppBar), вы можете использовать следующее, чтобы прикрепить тень над панелью:

<View
    android:layout_width="match_parent"
    android:layout_height="4dp"
    android:background="@drawable/shadow"
    app:layout_anchor="@+id/toolbar"
    app:layout_anchorGravity="top"/>

Очевидно, замените @+id/toolbar на идентификатор нижней навигационной панели.

Ответ 4

Для тех, кто использует Материальный компонент - это было исправлено com.google.android.material:material:1.1.0-alpha09.

Доступно с версии 1.1.0-alpha05: https://github.com/material-components/material-components-android/releases/tag/1.1.0-alpha05

Используйте android:elevation="4dp" для установки тени по высоте.

Также не забудьте установить clipChildren="false" на вашем основном макете, иначе тень будет перезаписана.