如何以编程方式设置锁抽屉模式



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

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

相关内容

  • 没有找到相关文章

最新更新