显示/隐藏DrawerLayout取决于当前片段

Bea*_*ear 6 android android-fragments android-actionbar android-support-library

我有一个Activity班级有一个DrawerLayout.该布局在Drawer中显示一个列表,让用户在其间切换fragments.在这些中Fragments,有一些URL,当用户使用clicsk时,WebviewFragment会显示一个.但是,我不想在展示DrawerLayoutWebViewFragment.相反,我希望用户被重定向到以前Fragment.

我有什么方法可以显示/隐藏DrawerLayout取决于当前的Fragment情况吗?我试着打电话mDrawerLayout.setVisibility(View.GONE),但似乎并不完整.至少ActionBar图标仍然是抽屉图标.

Kar*_*uri 18

您可以使用此方法锁定或解锁抽屉:DrawerLayout.setDrawerLockMode(...).(此方法还有另外两个版本,用于为特定抽屉指定锁定模式.)要锁定,请使用DrawerLayout.LOCK_MODE_LOCKED_CLOSED; 解锁,使用DrawerLayout.LOCK_MODE_UNLOCKED.

如果您正在使用ActionBarDrawerToggle,则需要添加一些额外的代码,以防止在您锁定抽屉时单击ActionBarDrawerToggle时抽屉打开.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // check lock mode before passing to ActionBarDrawerToggle
    // I assume your drawer is on the left; if not, use Gravity.RIGHT
    int lockMode = mDrawer.getDrawerLockMode(Gravity.LEFT);
    if (lockMode == DrawerLayout.LOCK_MODE_UNLOCKED &&
            mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    // Handle your other action bar items...

    return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)

  • 尝试`ActionBarDrawerToggle.setDrawerIndicatorEnabled()`方法 (3认同)