如何删除NavigationView下面的阴影?

时间:2017-03-20 17:33:34

标签: android android-layout

如果NavigationView的高度小于其父级的高度,则NavigationView下方会出现一个阴影。如何删除阴影?

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:orientation="vertical"
        android:background="@android:color/white">

    <android.support.design.widget.NavigationView
            android:id="@+id/map_type_menu"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            app:menu="@menu/menu_map_type"/>

    <!-- unwanted drop shadow here -->

    <fragment
            android:id="@+id/settings"
            android:name="com.chalcodes.treasuremap.SettingsFragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

</LinearLayout>

enter image description here

我认为这不相关,但这里是menu_map_type XML:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
                android:id="@+id/item_street"
                android:icon="@drawable/ic_menu_map_type_street"
                android:title="@string/map_type_street" />
        <item
                android:id="@+id/item_satellite"
                android:icon="@drawable/ic_menu_map_type_satellite"
                android:title="@string/map_type_satellite" />
        <item
                android:id="@+id/item_hybrid"
                android:icon="@drawable/ic_menu_map_type_satellite"
                android:title="@string/map_type_hybrid" />

        <item
                android:id="@+id/item_terrain"
                android:icon="@drawable/ic_menu_map_type_terrain"
                android:title="@string/map_type_terrain" />
    </group>

</menu>

3 个答案:

答案 0 :(得分:2)

只需添加到您的NavigationView布局:

app:elevation="0dp"

答案 1 :(得分:0)

试试这个。

<android.support.design.widget.NavigationView
            android:id="@+id/map_type_menu"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            app:menu="@menu/menu_map_type">


 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> 

<include layout="@layout/nav_header" /> 

<fragment android:id="@+id/settings" android:name="com.chalcodes.treasuremap.SettingsFragment" android:layout_width="match_parent" android:layout_height="wrap_content"/>

</LinearLayout> 

</android.support.design.widget.NavigationView>

答案 2 :(得分:0)

阴影是由NavigationView具有非零默认高程引起的。这实际上是我想到的第一件事,但我试图改变它的方式不起作用,所以我错误地认为提升不是问题。

我最初在android:elevation="0dp"声明中添加了NavigationView。这产生了一个警告,因为我支持21以下的API。我错误地认为这个属性对于API 21+仍然有效,但显然它被剥离了。

解决方案是在代码中设置高程:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    navView.setElevation(0f);
}