How to hide navigation drawer when opening certain fragment?

前端 未结 2 2056
小鲜肉
小鲜肉 2020-12-18 01:02

I\'m pretty new in android development. I want to hide navigation drawer when user is not logged in. So basically, it will shown login fragment (better in full screen like F

相关标签:
2条回答
  • 2020-12-18 01:22

    Define an interface say DrawerLocker:

    interface DrawerLocker{
       public void setDrawerLocked(boolean shouldLock);
    }
    

    Implement this interface in your activity which contains the NavigationDrawer and override this method.

    class YourActivity implements DrawerLocker{
    ...
    ...
    public void setDrawerLocked(boolean enabled){
        if(enabled){
            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        }else{
            drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        }
    
    }
    

    Now in your Fragment's onCreateView, call this method like:

     ((DrawerLocker)getActivity()).setDrawerLocked(true);
    

    In your Fragment's onDestroyView, re enable the drawer layout:

    ((DrawerLocker)getActivity()).setDrawerLocked(false);
    
    0 讨论(0)
  • 2020-12-18 01:38

    This code in activity onCreate method will block drawer when you will have more than one fragment in stack:

     getSupportFragmentManager().addOnBackStackChangedListener(() -> {
            if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
            } else {
                drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            }
        });
    
    0 讨论(0)
提交回复
热议问题