【问题标题】:Android close DrawerLayout when it is on Lock modeAndroid在锁定模式下关闭DrawerLayout
【发布时间】:2018-05-12 18:00:09
【问题描述】:

当我在打开和关闭抽屉布局上设置锁定并禁用滑动时,我无法通过按下手机上的后退按钮来关闭它,当模式不是锁定时按下后退按钮导致关闭,但是当我将模式更改为例如:

drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

按后退按钮无法关闭

【问题讨论】:

  • 以编程方式关闭它,因为抽屉处于锁定模式。实现 onBackPressed 关闭它

标签: android


【解决方案1】:

您需要以编程方式关闭它,因为抽屉处于锁定模式并且不会自动关闭。 在您的活动中实现此方法,以便您可以通过编程方式关闭它。

查看DrawerLayout.LOCK_MODE_LOCKED_CLOSED的文档

@Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        }else{
            super.onBackPressed();
        }
    }

【讨论】:

  • 问题是onBackPressed 当我按下返回按钮时不会触发
  • 那么可能有不同的问题。
【解决方案2】:

我认为这是因为您将状态设置为 LOCKED_CLOSED,因此在将其设置为 _UNLOCKED 状态之前,您无法从该状态移动。在这里查看我的答案:https://stackoverflow.com/a/50304856/2873702

基本上你必须调用函数

drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

改为使用 UNLOCKED 参数。我建议尝试在 onBackPressed 函数中使用它。你应该做类似的事情

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
    drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    drawer.closeDrawer(GravityCompat.START);
    drawer_layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    }else{
        super.onBackPressed();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多