2017-03-20 1 views
1

Wenn die Höhe eines NavigationView kleiner als die Höhe des übergeordneten Elements ist, gibt es einen Schattenwurf unter dem NavigationView. Wie kann ich diesen Schatten entfernen?Wie entferne ich Schatten unter NavigationView?

Hier ist mein Layout:

<?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

Ich glaube nicht, dass dies relevant ist, aber hier ist die 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> 
+0

kann ich Ihr Design Screenshot zu sehen? –

+0

können Sie den Code der Datei 'menu_map_type' einfügen? –

+0

Ich habe es versucht. aber ich finde deine Lösung dieses Typs nicht. Sorry –

Antwort

0

bereits.

<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> 
+0

Die Höhe kann nicht "match_parent" sein. Die 'NavigationView' teilt ihre Eltern mit anderen Ansichten. –

+0

Ich habe mich geirrt. Könnten Sie bitte einen Screenshot posten? Es ist schwer zu erraten, wo dieser Schatten sein würde? – albeee

+0

Ein Screenshot wurde hinzugefügt. –

0

ist der Schatten durch die NavigationView verursacht eine von Null verschiedenen Standardhöhen aufweisen. Das war eigentlich das erste, an das ich dachte, aber die Art und Weise, wie ich versuchte, es zu ändern, funktionierte nicht, also dachte ich fälschlicherweise, dass die Höhenlage nicht das Problem sei.

Ich ursprünglich android:elevation="0dp" in der NavigationView Deklaration hinzugefügt. Dies führte zu einer Warnung, da ich APIs unter 21 unterstütze. Ich ging fälschlicherweise davon aus, dass dieses Attribut für API 21+ weiterhin wirksam ist, aber anscheinend wird es entfernt.

Die Lösung war die Erhebung in Code zu setzen:

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

'Ich nahm fälschlicherweise an, dass dieses Attribut für API 21+ wirksam bleiben würde, aber anscheinend wird es entfernt." Ich kann nicht glauben, dass das passieren kann. – azizbekian

+0

@azizbekian Was auch immer der Grund ist, 'android: elevation =" 0dp "' hat keine Wirkung. –

2

Fügen Sie einfach zu Ihrem NavigationView Layout:

app:elevation="0dp" 
+0

Bei API 23 und höher habe ich ein Problem festgestellt: Wenn Sie 'app: height =" 0dp "' einstellen, gibt es einen grauen Farbton über 'NavigationView'. Die Lösung würde 'NavigationView' ein anderes Attribut setzen:' android: background = "# 0000" ' –

Verwandte Themen