web-dev-qa-db-ja.com

ツールバーがステータスバーの下に重なっている

私の活動にappcompat 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>
135
Emen

レイアウトのルートビューでAndroid:fitsSystemWindows="true"を使用します(あなたの場合はLinearLayout)。そしてAndroid:fitsSystemWindows

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

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

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

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

232
Sohaib

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

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

そして確かに

 <item name="Android:windowTranslucentStatus">false</item>
17
Zahra.HY

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

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

ASがデフォルトで次の行を記述しているので、しないと書いてください。

<item name="Android:statusBarColor">@Android:color/transparent</item>
10
inder_gt

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

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

これを削除するだけで問題が解決しました。

9
Muz

下記のすべての行を/ 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>
4
1'hafs

答えのどれも私のために働きませんでした、しかしこれは私が設定した後に最終的に働いたものですAndroid:fitsSystemWindows = "false"

親の活動レイアウトファイルでは、それは多くの場所で提案されていませんが、それは私のために働くと私の一日を節約

3
anoopbryan2

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

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

Googleのドキュメントによると、我々はアプリのテーマで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
Abhiode