android - 显示/隐藏 DrawerLayout 取决于当前 fragment

标签 android android-fragments android-actionbar android-support-library

我有一个 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/

相关文章:

android - 如何检查 fragment 是否存在

android - 使用 fragment 时如何管理应用栏?

android - Android 中的自定义操作栏与父级不匹配

java - TextWatcher 中的编辑文本问题

Android 创建多个 fragment 或更好的方法?

android - Gingerbread Intent 的setPackage

android - 添加 fragment 的通用方法,如何实现它

android - 延迟后显示的 ViewPager fragment 中的操作栏项目

javascript - 在expo react-native中打开键盘时如何隐藏TabBar

java - 调用一堆 AsyncTask,有没有办法知道它们何时都完成显示消息?