android – 可靠获取状态栏的高度来解决KitKat半透明导航问题

我正在尝试使用新的Android 4.4半透明导航栏,并希望使用FLAG_TRANSLUCENT_NAVIGATION标志将导航栏设置为半透明。我只希望导航栏(后退,主页按钮等)是半透明的 – 我希望屏幕顶部的状态栏正常出现。不半透明

我正在使用的代码来实现这一点:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    Window w = getWindow();
    w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}

我现在的问题是Android现在认为“活动”是全屏的,并将布局放置在导航栏后面(这是正确的),不幸的是它也将布局放置在状态栏后面(一个问题)。

一个麻烦的解决方案是将填充应用到布局父视图的顶部,但是我需要确定状态栏的高度来执行此操作。

有人可以建议我如何获得状态栏的高度,它不像我以为会是微不足道的,或者建议一个正确的解决方案。

谢谢

public int getStatusBarHeight() {
      int result = 0;
      int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
      if (resourceId > 0) {
          result = getResources().getDimensionPixelSize(resourceId);
      }
      return result;
}

在onCreate方法中使用上述代码。把它放在一个contextWrapper类中。
http://mrtn.me/blog/2012/03/17/get-the-height-of-the-status-bar-in-android/

http://stackoverflow.com/questions/20584325/reliably-get-height-of-status-bar-to-solve-kitkat-translucent-navigation-issue

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android – 可靠获取状态栏的高度来解决KitKat半透明导航问题