Как установить высоту в нижнюю навигацию

Итак, 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"/>

Ответ 1

Итак, на данный момент (25.1.0) мы должны установить android:background для BNV на @android:color/white, чтобы иметь тень. Он не будет отображаться, если вы установите другой цвет (т.е. Ваш основной цвет)

Ответ 2

У меня была такая же проблема, и у меня был @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>

Надеюсь, это поможет кому-то.

Ответ 3

Повышение было исправлено в выпуске компонентов Android версии 1.1.0 (альфа) в соответствии с этим коммитом.

редактировать

для тех, кто интересуется, вот как вы добавляете новую зависимость:

dependencies {
    // ...
    implementation 'com.google.android.material:material:1.1.0-alpha02'
    // ...
}

Более подробную информацию о начале работы можно найти здесь, а информацию о релизах - здесь.

Ура!

Ответ 4

Это работает! Обратите внимание, что вы можете изменить цвет нижней панели, используя:

"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" />