Я реализую нижнюю панель навигации в приложении для Android, используя Поддержка Google дизайн-библиотека v25.1.0. Есть ли способ добавить эффект теневой тени, такой же, как в текущем приложении Google для Google Android?
Android Bottom Navigation Bar с тенью
Ответ 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"
на вашем основном макете, иначе тень будет перезаписана.