unlock drawer_layout when it is locked

跟風遠走 提交于 2019-12-18 09:06:12

问题


I have a mainactivity where I have created a method to lock/unlock the drawer_layout and locked it in the onCreate() method.

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);
    }
}

and after checking if the user is logged in or not i want to unlock the drawer from the fragment. I tried to do this in onActivityCreated but the drawer is still locked

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

in short

DrawerLayout.LOCK_MODE_UNLOCKED

doesn't unlock DrawerLayout...

any help would be appreciated.


回答1:


you have to initialize toggle again.

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

After that, it unlocked.




回答2:


After struggling a little.. nothing among other solutions in stackoverflow worked for me. My specific problem was also that I was able to lock but not to unlock the DrawerLayout.

Then I saw in documentation (https://developer.android.com/reference/android/support/v4/widget/DrawerLayout#setdrawerlockmode) that there are two more functions:

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

The second one worked for me like a charm.

I simply specified the Gravity.LEFT parameter and now all is working perfectly.



来源:https://stackoverflow.com/questions/23217214/unlock-drawer-layout-when-it-is-locked

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!