5

我在我的应用程序中使用 Sherlock 操作栏。我在菜单中使用了“ifRoom|withText”功能。如果我在纵向模式下测试我的代码,我只能看到图标,如果我将方向旋转到横向,我仍然只能看到图标。另一方面,如果我使用横向运行,我可以在纵向和横向上看到文本和图标。这意味着当屏幕旋转时,操作栏不会刷新。我该如何解决?

在菜单中,我有

    android:showAsAction="ifRoom|withText"

我也在清单文件中使用了这一行来修复

    android:configChanges="keyboardHidden|orientation|screenSize"

但它没有用。我运行我的代码 android 2.3

我还在活动中使用了片段,

        FragmentManager fm = getSupportFragmentManager();
    ft = fm.beginTransaction();

    mFragment1 = fm.findFragmentByTag("f1");

    if (mFragment1 == null) {

        mFragment1 = new MenuFragment();
        ft.add(mFragment1, "f1");

    }

    ft.commit();
4

2 回答 2

6

ActionBarSherlock 不支持处理配置更改。

在 ICS 之前,ActionBarSherlock 不像原生操作栏那样属于装饰视图,因此受到与内容视图相同的限制。通过处理配置更改,您不允许库适应更改,因此会看到不正确的显示或某些部分。

Android 文档也不鼓励处理配置更改。不惜一切代价避免它们,尤其是在使用 ActionBarSherlock 时。

在相关说明中,我仍在尝试为库的未来版本解决此问题,但现在建议避免使用。

于 2012-05-14T20:21:07.890 回答
0

我认为您将不得不在配置更改时重新创建 ActionBar 菜单

invalidateOptionsMenu();
于 2012-05-14T19:38:16.163 回答