4

我的应用程序中的 ActionBar 有问题;在某些情况下,ActionBar 似乎位于通知/标题栏的“下方”。每次都是可重现的,我不知道为什么会这样。我使用带有 Intents 的 ZXING 应用程序来扫描条形码并将它们返回到我的应用程序,并且在此过程中的某个时刻出现了问题。

我认为最好用图片向您展示问题。

1:app主界面,一切正常。

应用主屏幕,没有问题

2:使用菜单项扫描条码。这如预期的那样出现。

扫描产品...

3:扫描项目的产品页面显示正常。但是,如果我单击“取消”...

产品页面,一切正常。 按取消...

4:ActionBar 现在已经在通知/标题栏下方。

主屏幕现在在通知/标题栏下显示 ActionBar

唯一提到这样的错误(我可以找到)是在 ActionBarSherlock 的这个 GitHub 问题中(我正在使用):https ://github.com/JakeWharton/ActionBarSherlock/issues/602

我已经检查过了,正如杰克提到的那样,我没有对 configChanges 做任何奇怪的事情。

这个问题出现在我的 4.2.2 设备上,很遗憾我无法在 ICS 之前的设备上进行测试。

欢迎任何想法或建议!

4

1 回答 1

2

我猜当你从 zxing 屏幕回来时它不会被重置。在“最佳之前”的活动中,尝试重置全屏的窗口标志,例如:

@Override
protected void onResume() {
    super.onResume();
    //getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setSystemUiVisibility(this, View.SYSTEM_UI_FLAG_VISIBLE /* SYSTEM_UI_FLAG_VISIBLE=0 */);
}



private static void setSystemUiVisibility(final Activity activity, final int newValue){
    if (activity.getWindow() != null){
        View v = activity.getWindow().getDecorView();
        if (v != null) {
            try {
                Method methodSetSystemUIVisibility = v.getClass().getMethod("setSystemUiVisibility", int.class);
                methodSetSystemUIVisibility.invoke(v, newValue);
            } catch (Exception noop) {
            }
        }
    }
}
于 2013-06-21T20:43:35.030 回答