安卓:导航抽屉垂直阴影

13

我已经在我的应用程序中实现了一个NavigationDrawer。我想知道如何添加一个垂直阴影效果,它在主片段下面,类似于下面的图片。

enter image description here

我有一张带有阴影图像的图片放在我的drawable文件夹里,它叫做“drawer_shadow.9”,但我不知道如何在我的NavigationDrawer中实现它。


1
没问题。我想为您添加图片,因为我想帮助您。欢迎来到StackOverflow! - rayryeng
drawer_shadow.9 是否也适用于右侧抽屉? - Alexander Farber
是的,当然 @AlexanderFarber,你需要获取正确的 drawer_shadow.9 - Aspicas
2个回答

26

你需要使用drawable来创建阴影效果。在navigationDrawer对象上使用setDrawerShadow方法。例如:

navigationDrawer.setDrawerShadow(R.drawable.someDrawable, GravityCompat.START);

官方文件链接:setDrawerShadow

希望这有所帮助。


有没有一种在XML中实现它的方法? - RCB
你能提供关于 R.drawable.someDrawable 部分的信息吗?你有样例吗?它是一个 png 图片文件还是类似于通过 xml 创建的渐变效果? - RCB
7
我找到了一个名为drawer_shadow.9.png的文件,它是Google示例代码中包含的9patch文件。可以在http://developer.android.com/shareables/training/NavigationDrawer.zip下载该文件。 - RCB

2

(右侧抽屉) 活动布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    ...
</LinearLayout>

<LinearLayout
    android:layout_width="280dp"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:orientation="horizontal">

    <View
        android:layout_width="20dp"
        android:layout_height="match_parent"
        android:background="@drawable/drawer_shadow"
        android:paddingEnd="0dp"
        android:paddingLeft="-20dp"
        android:paddingRight="0dp"
        android:paddingStart="-20dp" />

    <fragment
        android:id="@+id/fragment_drawer"
        android:name="com.....HomeDrawer"
        android:layout_width="260dp"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:choiceMode="singleChoice"
        tools:layout="@layout/drawer_home" />

</LinearLayout></android.support.v4.widget.DrawerLayout>
驱动程序阴影:
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient
            android:startColor="#00FFFFFF"
            android:endColor="#f2e9e9e9"
            android:type="linear" />
        <size
            android:height="@dimen/activity_vertical_margin"
            android:width="5dp">
        </size>
    </shape>

效果: enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接