我创建了一个切换抽屉,当用户单击内容视图中显示的项目时,该抽屉将自动从右侧滑动。但是,此时,可以手动打开抽屉(用户可以通过从屏幕边缘滑动来滑动打开抽屉),也可以在用户单击显示的项目时自动打开。因此,我实现了以下代码行,mDrawer.setDrawerLockMode(1, GravityCompat.END);
其中“ 1”定义为:
公共静态最终int LOCK_MODE_LOCKED_CLOSED
抽屉已锁定关闭。用户可能无法打开它,尽管该应用程序可能会以编程方式将其打开。
常数值:1(0x00000001)
但是,在调试时,结果是用户仍然可以手动切换打开抽屉,并且在单击项目时仍可以自动切换抽屉。
实际希望的切换结果是,在选择了该项目后,只能将抽屉切换出来,而不是赋予用户手动切换抽屉的权限。
因此,有人可以帮忙看看有什么问题或提出一些建设性的建议吗?
我已附上以下代码供您细读:
mDrawerToggle = new CustomActionBarDrawerToggle(getActivity(), mDrawer);
mDrawer.openDrawer(GravityCompat.END);
mDrawer.setDrawerListener(mDrawerToggle);
//To lock the drawer from being manually toggled
mDrawer.setDrawerLockMode(1, GravityCompat.END);
您可以尝试这样做:
首先调用抽屉的布局:
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
之后,设置锁定模式,如下所示:
mDrawerLayout.setDrawerLockMode(mDrawerLayout.LOCK_MODE_LOCKED_CLOSED);
getActionBar().setHomeButtonEnabled(false); // This for the App Icon
然后,如果您想再次解锁抽屉:
mDrawerLayout.setDrawerLockMode(mDrawerLayout.LOCK_MODE_UNLOCKED); // It is unlocked but it is not shown.
或者
mDrawerLayout.setDrawerLockMode(mDrawerLayout.LOCK_MODE_LOCKED_OPEN); // To Show the drawer opened but it will stay open.
看看这是否对您有帮助。:)
编辑2:
现在我懂了:
声明您的抽屉布局和抽屉列表视图:
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList = (ListView)findViewById(R.id.list_slidermenu);
在按钮/项目侦听器上,执行以下操作:
yourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDrawerLayout.openDrawer(mDrawerList); // This will open the button on click of the item
}
});
出于解锁的合理性,我只是向您展示了它,以防万一您想再次打开抽屉。
不要锁定按钮,请先尝试我的修改。看看是否有帮助。
编辑3:
设置您的抽屉列表视图和抽屉布局:
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList = (ListView)findViewById(R.id.list_slidermenu);
mDrawerLayout.setDrawerLockMode(mDrawerLayout.LOCK_MODE_LOCKED_CLOSED); //prevents user from manually opening the drawer
getActionBar().setHomeButtonEnabled(false); // Prevents user from opening the drawer using the app icon
然后将其添加到您的监听器上:
yourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDrawerLayout.openDrawer(mDrawerList); // This will open the button on click of the item
}
});
我在我的应用程序上对此进行了测试,我相信您想要的东西。因此,基本上,即使用户尝试滑动或单击应用程序图标,抽屉也不会打开,但是一旦在内容视图中单击某个项目,抽屉就会打开。我相信这是您想要的输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句