【问题标题】:ActionBar under notification/title bar通知/标题栏下的 ActionBar
【发布时间】:2013-06-21 20:30:45
【问题描述】:

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

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

1:应用主界面,一切正常。

2:使用菜单项扫描条码。这符合预期。

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

4:ActionBar 现在位于通知/标题栏下方。

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

我已经检查过了,我并没有像 Jake 提到的那样对 configChanges 做任何奇怪的事情。

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

欢迎提出任何想法或建议!

【问题讨论】:

  • 您使用的是自定义ROM吗?如果是自定义实现,可能无法与 ABS 配合使用。
  • 我在使用我的一部手机 (HTC One),但我的另一部手机 (HTC Desire S) 有货,它们都有问题。
  • 我还建议测试常规的 ActionBar 代码(没有支持库)。那时您可以排除支持库和/或 ABS。
  • 我的应用程序也有这个问题,我根本没有使用操作栏库。当我的应用程序从另一个活动(onActivityResult)返回时,它会经常发生。很想找到解决办法。

标签: android actionbarsherlock android-actionbar zxing titlebar


【解决方案1】:

我猜当你从 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) {
            }
        }
    }
}

【讨论】:

  • 尝试了两种可能受影响的活动,但问题仍然存在。不过有趣的想法!
  • 尝试设置全屏,然后将其删除(我编辑了答案)
  • :( 确实。试试这个setSystemUiVisibility 方法?
  • 恐怕再也没有变化了。在 Home 和 Edit 活动中都进行了尝试。不过,我很感谢你的坚持!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多