0

在DrawerLayout中有兩個導航片段。一個導航片段位於左側,另一個位於右側。在DrawerLayout中鎖定兩個片段中的一個

在某些情況下,我需要打開左側導航片段並將其鎖定。

當我只剩下我使用的導航片段drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN); 但是當我在右側添加第二個導航片段時,此方法開始打開並鎖定兩個面板。

如何在這種情況下只打開和鎖定左側導航視圖?

回答

1

更改你像這樣的代碼

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

這應該工作。

+0

如何使用上面的代碼,如果我使用利用FragmentDrawer片段在XML: - <片段 機器人:ID = 「@ + ID/fragment_navigation_drawer_right」 機器人:名稱= 「fragment.FragmentDrawer」 機器人:layout_width =」 @捫/ nav_drawer_width」 機器人:layout_height = 「match_parent」 機器人:layout_gravity = 「結束」 應用程式:佈局= 「@佈局/ fragment_navigation_drawer_left」 工具:佈局= 「@佈局/ fragment_navigation_drawer_left」/> 2016-01-14 09:01:21

相關問題