首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换导航视图项Ripple效应

替换导航视图项Ripple效应
EN

Stack Overflow用户
提问于 2019-03-15 13:56:27
回答 1查看 1.3K关注 0票数 3

我试图替换我认为是默认项目背景的NavigationView。因此,我创建了一个绘图来替换背景,并使用itemBackground属性应用它。

background_navigation_view_item.xml

代码语言:javascript
复制
<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绘图(应该只显示一个圆角矩形,而不是围绕它的矩形)。

我还测试了可绘制作为可检查视图的背景,它的工作方式与我所期望的一样。那么,如果它不是我的绘图代码中的一个错误,为什么原始的背景绘图不能被替换呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-30 16:59:24

我已经回答了这个问题,here

注意:这段代码只是消除了背景默认波纹的不透明性

不管怎样,我会在这里再接一次。

假设您的NavigationView代码是:

代码语言:javascript
复制
<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中添加了一个主题属性,如下所示:

代码语言:javascript
复制
android:theme="@style/NavigationItemNoRipple"

styles.xml:

代码语言:javascript
复制
<style name="NavigationItemNoRipple">
    <item name="android:colorControlHighlight">@android:color/transparent</item>
</style>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55184220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档