ステータスバーの下に重なるツールバー


168

アクティビティにappcompat v21ツールバーを含めたいです。しかし、実装しているツールバーがステータスバーの下に重なっています。どうすれば修正できますか?

重なり合うツールバー

アクティビティレイアウト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>

アプリケーションをどのようにカスタマイズしましたThemeか?それらを投稿してください。
SilentKnight 2015

CoordinatorLayoutstackoverflow.com/a/47906087/2201814:あなたはこの試みることができる
MHSFisher

ルートビューとしてandroidx.coordinatorlayout.widget.CoordinatorLayoutの問題に直面している人のためにアンドロイドを設定する必要があります下にSOユーザーの1によって提案されたようfitsSystemWindows =「false」を.thisは...私のために働いた...
Muahmmad Tayyib

回答:


273

android:fitsSystemWindows="true"レイアウトのルートビューで使用します(この場合は、LinearLayout)。そしてandroid:fitsSystemWindows

ステータスバーなどのシステムウィンドウに基づいてビューのレイアウトを調整するための内部属性。trueの場合、このビューのパディングを調整して、システムウィンドウ用のスペースを残します。このビューが非組み込みアクティビティにある場合にのみ有効になります。

「true」または「false」のブール値でなければなりません。

これは、このタイプの値を含むリソース( "@ [package:] type:name"の形式)またはテーマ属性( "?[package:] [type:] name"の形式)への参照でもあります。 。

これは、グローバル属性リソースシンボルfitsSystemWindowsに対応します。


22
@AimanBは、テーマを次のように設定することでグローバルに設定できます <item name="android:fitsSystemWindows">true</item>
Samir

13
@Samirこれはこのコメントで
Sufian

9
この問題は、ルートレイアウトにandroid:fitsSystemWindows = "true"を追加した後でも発生します。スタイルに<item name = "android:statusBarColor"> @ android:color / transparent </ item>が含まれている場合。この質問を読んでいる人のためにちょうど述べました。
Sakkeer Hussain

3
同じ問題が発生し、android:fitsSystemWindows = "true"が機能しません。誰でもこれを投稿してください解決策があります。
Jatin

1
この答えは私の問題を解決しました。しかし今、私はすべてのアンドロイドトーストをパディングなしで見つけました!
kds23 2016年

18

これをv21 / styles.xmlファイルに設定するだけです

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

そして確かに

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

1
app:layout_behavior = "@ string / appbar_scrolling_view_behavior"のようなものがあれば、削除してください!@TheHunter
Zahra.HY

セット<item name = "android:windowTranslucentStatus"> false </ item>
Zahra.HY

10

私にとって問題は、例から何かをコピーして使用したことでした

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

これを取り除くだけで私の問題は修正されました。


10

答えはどれもandroid:fitSystemWindowsうまくいきませんでしたが、ルートビューに設定した後、これが最終的にうまくいきました(スタイルv21でこれらを設定しました)。

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

ASはデフォルトで次の行を挿入するため、次の行がないことを確認してください

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

6

答えはどれもうまくいきませんでしたが、これは私が設定した後に最終的にうまくいったものです:

android:fitsSystemWindows="false"

親アクティビティレイアウトファイルでは、多くの場所で推奨されていませんが、それは私にとっては仕事であり、私の日を救います


これは、レイアウトのルートビューがandroidx.coordinatorlayout.widget.CoordinatorLayoutタイプである場合にも機能しました。
Faheem Ezani

5

以下のすべての行を/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>

0

google docsによると、アプリのテーマでfitsSystemWindows属性を使用しないでください。レイアウトファイルで使用することを目的としています。テーマで使用すると、トーストメッセージで問題が発生する可能性があります。

問題を確認してくださいここ &問題の例が発生し、ここで

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

正しい方法の使用例で、windowTranslucentStatusでも正常に機能する例。

<?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>

0

下の行をスタイルまたはスタイルから削除します(21)

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowTranslucentStatus">false</item>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.