我有一个 Activity
类,它有一个 DrawerLayout
。该布局在抽屉中显示一个列表,并让用户在 fragments
之间切换。在这些 Fragments
中,有一些 URL,当用户点击它时,将显示一个 WebviewFragment
。但是,我不想在 WebViewFragment
中显示 DrawerLayout
。相反,我更希望用户被重定向到之前的 Fragment
。
有什么方法可以让我根据当前的Fragment
显示/隐藏DrawerLayout
吗?
我尝试调用 mDrawerLayout.setVisibility(View.GONE
),但它似乎并不完整。至少 ActionBar
图标仍然是抽屉图标。
最佳答案
您可以使用此方法锁定或解锁抽屉: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);
}
关于android - 显示/隐藏 DrawerLayout 取决于当前 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18158542/