我创建了一个切换抽屉,当用户点击内容视图中显示的项目时,抽屉将自动从右侧滑动。但是,此时,可以手动切换抽屉( 用户可以通过从屏幕边缘滑动来滑动打开抽屉 )以及用户打开的抽屉用户单击显示的项目时自动进行。因此,我已将以下代码行实现为 mDrawer.setDrawerLockMode(1, GravityCompat.END);
,其中“1”定义为:
public static final 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);
答案 0 :(得分:0)
您可以尝试这样做:
首先调用抽屉的布局:
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
}
});
对于Unlock的合理性,我只是展示了你想要再次打开抽屉。
不要锁定按钮,只需先尝试编辑。看看这对你有帮助吗。
编辑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
}
});
我在我的应用上测试了这个,我相信这是你想要的东西。因此,即使用户试图滑动或单击应用程序图标,抽屉也不会打开,但是一旦在内容视图上单击某个项目,它就会打开。这是我相信你想要的输出。