mNavigationView.getMenu().findItem(R.id.nav_connect)
.setActionView(new Switch(this));
// To set whether switch is on/off use:
((Switch) mNavigationView.getMenu().findItem(R.id.nav_connect).getActionView()).setChecked(true);
SwitchCompat drawerSwitch = (SwitchCompat) navigationView.getMenu().findItem(R.id.switch_item).getActionView();
drawerSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// do stuff
} else {
// do other stuff
}
}
});
DrawerActivity.java:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == R.id.switch_item) {
return false;
}
closeDrawer();
return true;
}
9条答案
按热度按时间c8ib6hqw1#
抽屉式导航栏的菜单项:
以及该项目的布局:
我最终使用了一种不同的方法。事实上,我发现你可以使用抽屉里的任何视图,所以没有必要为菜单的东西费心。只要用通常的方法(使用侦听器等)创建一个视图,然后添加到抽屉里就行了。
goqiplq22#
我发现这样做的一种方法是在你想要的menuItem上使用setActionView:
可能还需要一个单击侦听器来更改Switch的状态:
我还没有尝试过,但您可能可以使用xml格式的android:actionLayout="@layout/switch_layout”并指向您创建的自定义布局。
也可以尝试使用一个ActionProvider,它可能会提供更多的健壮性。我也没有尝试过这个方法。
i86rm4rw3#
没有一个答案似乎是完整的,所以经过一些更多的研究,这里是我想出的:
抽屉开关.xml:
抽屉_菜单.xml:
DrawerActivity.java:
DrawerActivity.java:
2exbekwf4#
我做过类似的事。
lyr7nygr5#
对于使用
Kotlin Extensions
的用户1.菜单文件
1.开关布局文件
1.代码访问
w9apscun6#
简单的是,你可以很容易地做到这一点,我将张贴我的代码,以便您可以实现它
主要活动布局应为:
这是一个逐步的tutorial for Navigation Drawer using Design Library
rryofs0p7#
你应该可以的。
您的抽屉式导航视图可以是
LinearLayout
,在其中,您可以包括您的NavigationView
和另一个添加开关的ViewGroup
。vkc1a9a28#
如果你必须更新导航中的开关,那么最好使用两种不同的菜单布局,选中开关和不选中开关。所以通过检查当前状态,你可以轻松地改变导航抽屉。
ldfqzlk89#
在
res
-〉menu
-〉menu.xml
中,使用字段创建<item>
:app:actionViewClass
示例:
接下来在
Activity
或Fragment
中查找actionView
,如下所示:设置
OnCheckedChangeListener