【问题标题】:findViewById(android.R.id.statusBarBackground) returns nullfindViewById(android.R.id.statusBarBackground) 返回 null
【发布时间】:2017-11-07 13:07:57
【问题描述】:

我正在尝试获取StatusBarView(我需要它用于活动共享元素过渡动画)。

我在我的活动中使用以下代码:

View decorView = getWindow().getDecorView();
View statusBar = decorView.findViewById(android.R.id.statusBarBackground);

但statusBar 始终是null。 我在onCreate() 和onResume() 之后尝试了这段代码 - 没有效果。

怎么了?

【问题讨论】:

  • @IntelliJAmiya nop,您可以使用它获得一些视图,例如 getWindow().getDecorView().findViewById(android.R.id.content) 从当前活动返回根视图
  • @FarshidABZ 好吧好吧
  • 您无法从 android R 文件中获取状态栏视图。为什么要得到它?
  • @FarshidABZ,好吧,看看这个问题并接受答案stackoverflow.com/questions/26600263/…
  • @T.Vert 哇,我要测试一下

标签: android android-statusbar


【解决方案1】:

为那些只需要一个清晰的答案而不阅读 T.Vert 链接的整个主题的人准备的片段

    final View decor = getWindow().getDecorView();
    decor.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            decor.getViewTreeObserver().removeOnPreDrawListener(this);
            View statusBar = decor.findViewById(android.R.id.statusBarBackground);
            return true;
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多