Vadims Savjolovs
Vadims Savjolovs

Reputation: 2668

Lock one of two fragments in DrawerLayout

I have two navigation fragments in the DrawerLayout. One navigation fragment in on the left and second is on the right.

In some cases I need to open left navigation fragment and lock it.

When I had only left navigation fragment I used drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN); But when I have added second navigation fragment on the right, this method started to open and lock both panels.

How to open and lock only left navigation view in this case?

Upvotes: 0

Views: 373

Answers (1)

Fahim
Fahim

Reputation: 12358

Change you code like this

@Override 
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_drawer_layout); 
  mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
  mLeftDrawerList = (ListView) findViewById(R.id.left_drawer);
  mRightDrawerList = (ListView) findViewById(R.id.right_drawer);
  mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_drawer, R.string.drawer_open,R.string.drawer_close) {

    public void onDrawerOpened(View view){
      if(view.equals(mRightDrawerList)) { 
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mLeftDrawerList); 
      } else { 
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mRightDrawerList);
      } 
      invalidateOptionsMenu(); 
    } 

    public void onDrawerClosed(View view) { 
      if(view.equals(mRightDrawerList)) { 
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mLeftDrawerList); 
      } else { 
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mRightDrawerList); 
      }
      invalidateOptionsMenu();
    }
  });

  mDrawerLayout.setDrawerListener(mDrawerToggle);
}

This should work.

Upvotes: 1

Related Questions