Ответ 1
Итак, на данный момент (25.1.0) мы должны установить android:background
для BNV на @android:color/white
, чтобы иметь тень. Он не будет отображаться, если вы установите другой цвет (т.е. Ваш основной цвет)
Итак, support V25
. У нас есть новый компонент под названием Bottom navigation.
Следуйте инструкциям по дизайну, нижняя навигация elevation
должна быть 8dp
(https://material.io/guidelines/components/bottom-navigation.html#bottom-navigation-specs)
Но я не могу установить для него elevation
.
Любое предложение, пример будет оценено. Спасибо!
ОБНОВЛЕНИЕ XML CODE
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:elevation="8dp"
app:elevation="8dp"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@drawable/bottom_nav_color_state"
app:itemTextColor="@drawable/bottom_nav_color_state"
app:menu="@menu/bottom_navigation_main"/>
<FrameLayout
android:id="@+id/contentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_navigation"
android:background="#EDEDED"/>
Итак, на данный момент (25.1.0) мы должны установить android:background
для BNV на @android:color/white
, чтобы иметь тень. Он не будет отображаться, если вы установите другой цвет (т.е. Ваш основной цвет)
У меня была такая же проблема, и у меня был @android:color/white
, поскольку предложенный OP не был приемлемым в моем случае. Поэтому, поскольку мы "не можем" получить тень с высотой и пользовательским фоном, нам нужно взломать ее.
Мой подход добавляет теневой вид внутри рамки, чтобы "имитировать" возвышение.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:elevation="8dp"
app:elevation="8dp"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@drawable/bottom_nav_color_state"
app:itemTextColor="@drawable/bottom_nav_color_state"
app:menu="@menu/bottom_navigation_main"/>
<FrameLayout
android:id="@+id/contentFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_navigation"
android:background="#EDEDED"/>
<some.kind.of.pager.or.other.content.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<View
android:id="@+id/shadow_view"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_gravity="bottom"
android:background="@drawable/shadow_gradient" />
</FrameLayout>
где фон теневого представления представляет собой не что иное, как градиент формы, который расположен над всем другим чуть выше нижнего навигационного представления, например:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:endColor="@android:color/transparent"
android:startColor="#8f000000" />
</shape>
Надеюсь, это поможет кому-то.
Повышение было исправлено в выпуске компонентов Android версии 1.1.0 (альфа) в соответствии с этим коммитом.
редактировать
для тех, кто интересуется, вот как вы добавляете новую зависимость:
dependencies {
// ...
implementation 'com.google.android.material:material:1.1.0-alpha02'
// ...
}
Более подробную информацию о начале работы можно найти здесь, а информацию о релизах - здесь.
Ура!
Это работает! Обратите внимание, что вы можете изменить цвет нижней панели, используя:
"app:itemBackground="@color/white"
но вы должны добавить:
android:background="@android:color/white"
Complete:
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
app:elevation="4dp"
app:itemBackground="@color/white"
app:itemIconTint="@color/grey"
app:itemTextColor="@color/grey"
app:menu="@menu/my_navigation_items" />