Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何删除NavigationView项目背景_Android_Android Navigationview_Material Components Android_Material Components - Fatal编程技术网

Android 如何删除NavigationView项目背景

Android 如何删除NavigationView项目背景,android,android-navigationview,material-components-android,material-components,Android,Android Navigationview,Material Components Android,Material Components,对于itemBackground属性来说,这似乎很简单,但由于某些原因,它不起作用。 如下图所示,我可以成功地添加我自己的背景(蓝色),但原始波纹(灰色矩形)仍然可见。 将itemBackground设置为null似乎也不起作用 我的导航视图: <com.google.android.material.navigation.NavigationView android:id="@+id/nav_view" style="@style/Widget.MaterialComp

对于
itemBackground
属性来说,这似乎很简单,但由于某些原因,它不起作用。 如下图所示,我可以成功地添加我自己的背景(蓝色),但原始波纹(灰色矩形)仍然可见。 将
itemBackground
设置为
null
似乎也不起作用

我的导航视图:

<com.google.android.material.navigation.NavigationView
    android:id="@+id/nav_view"
    style="@style/Widget.MaterialComponents.NavigationView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_main"
    app:itemBackground="@drawable/nav_item_background"
    app:menu="@menu/main_drawer" />

(从生成的视图看,基本上未触及样式)

我的涟漪:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/accent_ripple">
    <item
        android:id="@android:id/mask"
        android:right="8dp">
        <shape android:shape="rectangle">
            <corners
                android:bottomRightRadius="50dp"
                android:topRightRadius="50dp" />
            <solid android:color="#fff" />
        </shape>
    </item>
</ripple>


我的应用程序主题也扩展了
主题。MaterialComponents
,所以我没有主意了。

你可以这样做:

 <com.google.android.material.navigation.NavigationView
    android:id="@+id/navigationView"
    android:layout_width="230dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="@color/colorPrimaryDark">

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

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

        <include layout="@layout/layout_navigation" />
    </LinearLayout>

</com.google.android.material.navigation.NavigationView>

您为什么不使用自己的绘图工具覆盖它?您可以使用自己的颜色和效果,甚至使用十六进制使涟漪效果透明

#ffffffff


如果您希望在项目背景中使用自定义形状,请不要使用
app:itemBackground
属性

使用app:itemshapeaperanceoverlay和app:itemShapeFillColor属性:

<com.google.android.material.navigation.NavigationView
    app:itemShapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Item"
    app:itemShapeFillColor="@color/nav_item_shape_fill"
    android:theme="@style/ThemeOverlay.NavigationView"
    ../>

检查此项。

您已尝试在菜单项中设置checkable=false。刚刚尝试,但没有任何效果。不幸的是,设置app:itemBackground=“@android:color/transparent”即使使用transparent,仍然存在原始的涟漪。您基本上是在这里用自己的布局重新实现导航视图吗?我希望在理想情况下避免这种情况,因为我“我确信其他人已经使用了它并创建了自己的涟漪,这就是我尝试使用
itemcoundback
所做的<代码>导航项目背景是我自己绘制的,如图所示。这一改变确实奏效,但由于某种原因,在最近的答复中仍然保留了原来的背景。我确实在上看到您的问题,但这似乎对我仍然不起作用。是否需要任何父主题?将其标记为修复程序,尽管真正的修复程序是通过android:theme将控件高亮显示设置为透明,如github中所述issue@AllanW谢谢你的反馈。我用我在问题中的解决方案更新了答案。
<com.google.android.material.navigation.NavigationView
    app:itemShapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Item"
    app:itemShapeFillColor="@color/nav_item_shape_fill"
    android:theme="@style/ThemeOverlay.NavigationView"
    ../>
  <style name="ShapeAppearanceOverlay.Item" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSizeTopRight">16dp</item>
    <item name="cornerSizeBottomRight">16dp</item>
    <item name="cornerSizeBottomLeft">0dp</item>
    <item name="cornerSizeTopLeft">0dp</item>
  </style>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:alpha="0.12" android:color="?attr/colorPrimary" android:state_activated="true"/>
  <item android:alpha="0.12" android:color="?attr/colorPrimary" android:state_checked="true"/>
  <item android:color="@android:color/transparent"/>
</selector>
  <style name="ThemeOverlay.NavItem.Ripple" parent="">
    <item name="android:colorControlHighlight">@android:color/transparent</item>
  </style>