工具栏在状态栏下重叠

我希望在我的活动中有应用程序 v21工具栏。但是我实现的工具栏在状态栏下面重叠。我该怎么补救?

overlapping toolbar

下面是活动布局 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">


<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />


<FrameLayout
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>

工具栏视图:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />

主题风格:

<style name="AppTheme" parent="MaterialNavigationDrawerTheme.Light.DarkActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
122896 次浏览

在布局的根视图中使用 android:fitsSystemWindows="true"(在本例中为 LinearLayout)。

对我来说,问题在于我从一个示例中复制了一些内容并使用了

<item name="android:windowTranslucentStatus">true</item>

把这个拿掉就解决了我的问题。

只需将其设置为 v21/styles.xml 文件

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>

确保万无一失

 <item name="android:windowTranslucentStatus">false</item>

我删除了下面提到的所有行从 /res/values-v21/styles.xml,现在它是工作良好。

 <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>




<item name="windowActionBar">false</item>
<item name="android:windowDisablePreview">true</item>


<item name="windowNoTitle">true</item>


<item name="android:fitsSystemWindows">true</item>

所有的答案对我来说都不起作用,但是这是我在根视图上设置 android:fitSystemWindows后最终起作用的(我将这些设置为样式 v21) :

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">false</item>

确保你的 不要默认有以下行:

<item name="android:statusBarColor">@android:color/transparent</item>

这些答案对我来说都不管用,但是这是我设置好之后最终起作用的:

android:fitsSystemWindows="false"

在家长活动布局文件中,它不建议在许多地方,但它的工作为我和节省我的一天

根据谷歌文档,我们不应该使用 fitsSystemWindows 属性在应用程序的主题,它是打算在布局文件中使用。在主题中使用可能会导致祝酒词消息中出现问题。

检查问题 给你和引起问题的例子 给你

<item name="android:fitsSystemWindows">true</item>

例如使用正确的方式,这工程与 半透明状态也很好。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"


android:fitsSystemWindows="true"


android:layout_width="match_parent"
android:layout_height="match_parent"
>




<include layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</include>


<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:background="@color/white"
android:animateLayoutChanges="true"
app:headerLayout="@layout/navigation_drawer_header"
app:menu="@menu/navigation_drawer_menu" />


</android.support.v4.widget.DrawerLayout>

从样式或样式中删除下面的行(21)

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowTranslucentStatus">false</item>

发生这种事有很多原因. . 首先你必须检查你的他们是怎么回事. 。

<style name="AppTheme" parent="BaseAppTheme">
<item name="android:windowBackground">@android:color/white</item>
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:textColorHint">@color/secondary_text</item>
</style>

如果你使用 <item name="android:windowTranslucentStatus">true</item>这个代码在你的主题它应该是重叠你的动作栏。你可以用假来解决这个问题。
<item name="android:windowTranslucentStatus">false</item>.

或者如果你想保持真实,请使用

你有另一个选项可以使用这个。你可以使用 android:fitsSystemWindows="true"

这在特定 xml 文件的根视图中。

若要防止工具栏与状态栏重叠,请将这些行添加到主题中

<item name="android:fitsSystemWindows">true</item>
<item name="android:windowTranslucentStatus">true</item>

对我很有效