7

我有一Activity堂课有DrawerLayout. 该布局在 Drawer 中显示一个列表,并让用户在fragments. 在这些Fragments中,有一些 URL,当用户单击它们时,WebviewFragment会显示一个。但是,我不想DrawerLayoutWebViewFragment. 相反,我希望用户被重定向到以前的Fragment.

有什么办法让我显示/隐藏DrawerLayout取决于电流Fragment是什么?我尝试调用mDrawerLayout.setVisibility(View.GONE),但似乎不完整。至少ActionBar图标仍然是抽屉图标。

4

2 回答 2

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);
}
于 2013-08-10T05:01:48.257 回答
1

为什么不打开一个只有 WebView 作为其内容的新 Activity 呢?然后用户必须按下返回按钮才能回到带有 DrawerLayout 的 Activity,这样就没有问题了。

或者,您不必自己进行此类活动,您可以让 Android 找到一个浏览器供他们打开,而不是使用以下代码:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("HTTP_URL_GOES_HERE"));
startActivity(intent);
于 2013-08-10T04:29:09.800 回答