【问题标题】:How to disable drawer layout from one side?如何从一侧禁用抽屉布局?
【发布时间】:2014-01-20 11:47:19
【问题描述】:

我做了一个双抽屉布局没有操作栏是这样的:

Using Navigation Drawer without TitleBar or ActionBar

我的要求是在左侧抽屉打开时禁用右侧抽屉,反之亦然。因此,当左抽屉打开时,我会隐藏右抽屉按钮,反之亦然,效果很好。

但问题是,即使我隐藏了一个按钮(向左或向右),抽屉仍然会通过水平滑动(从右向左滑动)打开。 那么如何防止抽屉被滑动打开?

因为我在没有 ActionBarDrawerToggle 之类的内置函数的情况下这样做

setOnDrawerOpenListener
setOnDrawerCloseListener

不可用。

请帮忙!!

【问题讨论】:

    标签: android android-layout navigation-drawer


    【解决方案1】:

    这可能对你有帮助...

        drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
    
            @Override
            public void onDrawerStateChanged(int arg0) {
    
            }
    
            @Override
            public void onDrawerSlide(View view, float arg1) {
    
            }
    
            @Override
            public void onDrawerOpened(View view) {
                if(view == rightDrawerView) {
                    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, leftDrawerView);
                } else if(view == leftDrawerView) {
                    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, rightDrawerView);
                }
            }
    
            @Override
            public void onDrawerClosed(View view) {
                if(view == rightDrawerView) {
                     drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, leftDrawerView);
                } else if(view == leftDrawerView) {
                     drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, rightDrawerView);
                }
            }
        });
    

    【讨论】:

    • 这个答案几乎是完美的。但是,当我关闭左抽屉时,必须再次启用右抽屉“滑动打开”功能。为此: 1. 在 onDrawerClosed(View view) 中编写确切的 onDrawerOpened(View view) 代码 2. 将模式更改为 DrawerLayout.LOCK_MODE_UNLOCKED
    • @GopalRao 兄弟你在哪里??
    • 如何隐藏抽屉布局和导航视图?
    【解决方案2】:

    试试这个

    setDrawerLockMode (int lockMode, View drawerView)

    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, yourDrawer)
    

    【讨论】:

    • 但是我应该在哪里写你给我的代码。 Gopal Rao 给出了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多