对NavigationView项的涟漪效应

时间:2016-10-06 06:20:10

标签: android drawerlayout android-navigationview clicklistener

我的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>

现在我设置了click的监听器:

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而不是替换片段,我的菜单应该有附加选项。我该如何解决这个问题?

修改

当我设置<group android:checkableBehavior="single">时,一切正常,但在我的情况下,这不是这种行为,因为我正在启动另一个活动并且它不应该检查点击的项目,因为在这个新的活动中是返回顶部的按钮而不是访问导航抽屉。

1 个答案:

答案 0 :(得分:3)

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