windowTranslucentNavigation的问题

我想让我的navigation bar半透明,所以我做了这样的事情:

   false @color/action_blue @color/action_blue @color/status_bar true  

并且它运行良好,但我的工具栏状态栏已合并, 合并工具栏

当我用这个:

  false @color/action_blue @color/action_blue @color/status_bar  

resualt是:

漂亮的工具栏

true不仅使导航栏变得半透明,还会导致在状态栏后面绘制活动。

要解决此问题,您可以在工具栏顶部设置边距。

获取状态栏的高度可以通过以下方式完成:

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

现在通过此设置工具栏的边距(如果您的ToolBar在LinearLayout中):

 ((LinearLayout.LayoutParams) toolbar.getLayoutParams()).setMargins(0, getStatusBarHeight(this), 0, 0); 

有一个更好的解决方案:

只需将android:fitsSystemWindows="true"设置为父布局的xml即可。 系统将负责设置正确的paddingTop