1

我创建了一个切换抽屉,当用户单击内容视图中显示的项目时,抽屉将自动从右侧滑动。但是,此时,抽屉可以由用户手动切换(用户可以通过从屏幕边缘滑动来滑动打开抽屉)打开,也可以在用户单击显示的项目时自动切换打开。因此,我实现了以下代码行,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);
4

1 回答 1

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

        }
    });

为了解锁的合理性,我只是展示了它,以防你想再次打开抽屉。

不要锁定您的按钮,请先尝试我的编辑。看看这是否对你有帮助。

编辑 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

        }
    });

我在我的应用程序上对此进行了测试,我相信这是您想要的。因此,即使用户尝试滑动或单击应用程序图标,基本上抽屉也不会打开,但一旦在内容视图上单击项目,它就会打开。这是我相信你想要的输出。

于 2014-11-21T05:57:36.687 回答