Android Bottom Navigation Bar with drop shadow

℡╲_俬逩灬. 提交于 2019-11-27 04:28:06

问题


I'm implementing Bottom Navigation Bar in Android app using Google's support design library v25.1.0. Is there any way to add drop shadow effect, same as current Android native Google Photos app?


回答1:


You can draw your own shadow just above the bottom bar using simple View and its background:

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

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

Also, there are no compatibility issues if use this approach.




回答2:


You can use elevation to add shadows to any view

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

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

Refer this for more information




回答3:


For those using a CoordinatorLayout with the Bottom Navigation Bar (or BottomAppBar), you can use the following to attach a shadow above the bar:

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

Obviously, replace the @+id/toolbar with the id of the Bottom Navigation Bar




回答4:


For those using Material Component - this has been fixed by com.google.android.material:material:1.1.0-alpha09.

Available since 1.1.0-alpha05 : https://github.com/material-components/material-components-android/releases/tag/1.1.0-alpha05

Use android:elevation="4dp" to set elevation shadow.

Also, do not forget to set clipChildren="false" on your main layout, otherwise, the shadow will be overwritten.



来源:https://stackoverflow.com/questions/41650778/android-bottom-navigation-bar-with-drop-shadow

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!