更换导航查看项目涟漪效应(Replace Navigation View Item Ripple E

2019-10-28 13:38发布

我试图取代了我认为是默认的项目背景NavigationView 。 所以,我创建了一个可绘制的更换背景,并使用应用它itemBackground属性。

background_navigation_view_item.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/navigation_item_background_tint">
    <item android:id="@android:id/mask" android:top="4dp" android:bottom="4dp" android:left="8dp" android:right="8dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white"/>
            <corners android:radius="3dp"/>
        </shape>
    </item>
    <item android:top="4dp" android:bottom="4dp" android:left="8dp" android:right="8dp">
        <selector>
            <item android:state_checked="true">
                <shape android:shape="rectangle">
                    <solid android:color="@color/navigation_item_background_tint"/>
                    <corners android:radius="3dp"/>
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="@android:color/transparent"/>
                    <corners android:radius="3dp"/>
                </shape>
            </item>
        </selector>
    </item>
</ripple>

在选择项目时,项目背景绘制看起来很棒(“选择控件”是下图中所选择的项目)。 但被点击项目时(“进度指标”下文)似乎都默认纹波绘制 background_navigation_view_item.xml抽拉正在使用(仅一个圆角矩形应该显示,而不是周围的矩形)。

我还测试了可绘制为可检查的视图的背景,它的作品我希望的方式。 所以,如果它不是在我的绘制代码中的错误,为什么不是原来的背景绘制被取代?

Answer 1:

我已经回答了这个问题在这里

注:此代码只是删除的背景默认波纹的不透明度

不管怎么说,我会在这里再次回答。

假设你NavigationView代码:

<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/your_menu"
app:itemBackground="@drawable/background_navigation_view_item.xml"/>

什么我做,如下的NavigationView添加一个主题的属性:

android:theme="@style/NavigationItemNoRipple"

styles.xml:

<style name="NavigationItemNoRipple">
    <item name="android:colorControlHighlight">@android:color/transparent</item>
</style>


文章来源: Replace Navigation View Item Ripple Effect