导航视图项上的涟漪效应

3

我在我的DrawerLayout中使用了NavigationView,假设它有一个简单的菜单

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/nav_settings"
        android:icon="@drawable/ic_settings_black_24dp"
        android:title="@string/title_settings"/>

</menu>

现在我为点击设置监听器:

mNavigationVeiw.setOnNavigationItemSelected(this);

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.nav_settings:
            SettingsActivity.startActivity(this);
            mDrawerLayout.closeDrawer(GravityCompat.START);
            return true;
    }
    return false;
}

问题在于我看不到涟漪效果。当我长按项目时,涟漪是显示的,但是点击没有反应。我认为问题在于我在点击后打开了Activity而不是替换片段,并且我的菜单应该有额外的选项。我该如何解决这个问题?
编辑
当我设置时,一切都正常工作,但在我的情况下,不是这种行为,因为我正在启动另一个活动,它不应该检查已单击的项目,因为在这个新活动中,返回按钮位于顶部而不是访问导航抽屉。

你需要使用列表项填充你的导航抽屉。 - Developine
你正在使用哪个“支持库版本”? - Harshad Pansuriya
android:background="?attr/selectableItemBackground" - Aditya Vyas-Lakhan
我编辑了问题。我正在使用最新的支持库版本。 - user5980999
https://github.com/codepath/android_guides/wiki/Ripple-Animation - Aditya Vyas-Lakhan
1个回答

2

将itemBackground添加到您的xml文件中的NavigationView内,使用以下属性:

app:itemBackground="@drawable/ripple_navigation_selector"

此外,在drawable-v21文件夹中添加ripple_navigation_selector.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/submit_btn_ripple_color" >

    <item android:drawable="@color/accentColor" />

    <item
        android:id="@android:id/mask"
        android:drawable="@android:color/white" />

</ripple>

2
这里缺少一些信息。为什么涟漪选择器中会有两个可绘制对象?它们各自的作用是什么? - Jeffrey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接