锁定时解锁drawer_layout

时间:2014-04-22 10:41:56

标签: android drawerlayout

我有一个mainactivity,我创建了一个方法来锁定/解锁drawer_layout并将其锁定在onCreate()方法中。

public void disableDrawer(Boolean bol){
    if(bol) {
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
    }else{
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
    }
}

并且在检查用户是否登录后我想从片段中解锁抽屉。 我尝试在onActivityCreated中执行此操作,但抽屉仍处于锁定状态

MainActivity activity = ((MainActivity)getActivity());
activity.disableDrawer(false);

简而言之

DrawerLayout.LOCK_MODE_UNLOCKED

无法解锁DrawerLayout ...

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你必须再次初始化切换。

toggle = new ActionBarDrawerToggle(this,mDrawerLayout,mToolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);             mDrawerLayout.addDrawerListener(切换);

之后,它解锁了。

答案 1 :(得分:0)

经过一番努力之后.. stackoverflow中的其他解决方案都没有为我工作。 我的具体问题还在于我能够锁定但不能解锁DrawerLayout。

然后我在文档(https://developer.android.com/reference/android/support/v4/widget/DrawerLayout#setdrawerlockmode)中看到还有两个函数:

void setDrawerLockMode (int lockMode, View drawerView)
void setDrawerLockMode (int resId, int edgeGravity)

第二个对我来说就像一个魅力。

我只是简单地指定了Gravity.LEFT参数,现在一切都运行良好。