打开 NavigationView 仅单击左上角图标,但不使用 swype 手势
Posted
技术标签:
【中文标题】打开 NavigationView 仅单击左上角图标,但不使用 swype 手势【英文标题】:Open NavigationView only clicking on top-left icon but not with swype gesture 【发布时间】:2016-06-29 11:58:24 【问题描述】:我正在我的应用中实现导航视图。
实际上,我可以通过单击“汉堡”图标(在我的工具栏中)和从左向右滑动来打开它。
我只想通过我的工具栏中禁用 swype 的图标来打开它。有可能吗?
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, sToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
编辑
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); // HERE
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, sToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
如果我使用上面的代码,我使用 DrawerLayout.LOCK_MODE_LOCKED_CLOSED,我会禁用图标和 swype。
【问题讨论】:
disable the swipe gesture that opens the navigation drawer in android的可能重复 不,这不是重复的。它要求保持启用汉堡图标并禁用左滑动手势。我也有同样的问题。 你最后是怎么解决你的问题的? 你找到解决方案了吗? 【参考方案1】:这适用于我的情况
锁定它:
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
然后解锁:
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
希望能提供帮助!
【讨论】:
在你的抽屉初始化之后 如果我使用上面的代码,我使用 DrawerLayout.LOCK_MODE_LOCKED_CLOSED,我会禁用图标和 swype。 hmm 有趣.. 你有抽屉按钮的监听器来打开布局 如果您在 toggle.syncState() 之后尝试锁定抽屉; ,这个改变有效果吗? 我没有听众可以打开抽屉。我没有覆盖 DrawerListener。【参考方案2】:为了只在汉堡图标上点击而不是滑动,我做了以下,
DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, mDrawerLayout, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
mDrawerLayout.addDrawerListener(toggle);
toggle.syncState();
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mToolbar.setNavigationOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mDrawerLayout.openDrawer(GravityCompat.START);
);
【讨论】:
您还应该覆盖 onDrawerSlide 并在抽屉关闭时重新锁定 (slideoffset==0)...以上是关于打开 NavigationView 仅单击左上角图标,但不使用 swype 手势的主要内容,如果未能解决你的问题,请参考以下文章
Excel打开文件时,会同时打开一个空白Excel窗口,是怎么回事?
如何处理NavigationView PaneFooter设置项单击