programing tip

상태 표시 줄 아래에 겹치는 툴바

itbloger 2020. 6. 18. 21:30
반응형

상태 표시 줄 아래에 겹치는 툴바


내 활동에 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>

android:fitsSystemWindows="true"레이아웃의 루트보기에서 사용하십시오 (귀하의 경우 LinearLayout). 그리고 android:fitsSystemWindows

상태 표시 줄과 같은 시스템 창을 기반으로 뷰 레이아웃을 조정하는 내부 속성입니다. true 인 경우,이보기의 패딩을 조정하여 시스템 창의 공간을 확보하십시오. 이보기가 포함되지 않은 활동 인 경우에만 적용됩니다.

부울 값 ( "true"또는 "false")이어야합니다.

이 유형의 값을 포함하는 자원 ( "@ [package :] type : name"형식) 또는 테마 속성 ( "? [package :] [type :] name"형식)에 대한 참조 일 수도 있습니다. .

This corresponds to the global attribute resource symbol fitsSystemWindows.


Just set this to v21/styles.xml file

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

and be sure

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

None of the answers worked for me, but this is what finally worked after i set android:fitSystemWindows on the root view(I set these in styles v21):

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

Make sure you don't have the following line as AS puts it by default:

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

For me, the problem was that I copied something from an example and used

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

just removing this fixed my problem.


I removed all lines mentioned below from /res/values-v21/styles.xml and now it is working fine.

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

None of the answers worked for me, but this is what finally worked after i set android:fitsSystemWindows="false"

부모 활동 레이아웃 파일에서 그것은 많은 장소에서 제안되지 않지만 그것은 나를 위해 일하고 내 하루를 저장합니다.


구글 문서에 따르면, 앱 테마에 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>

스타일 또는 스타일에서 아래 줄 제거 (21)

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

참고 URL : https://stackoverflow.com/questions/29738510/toolbar-overlapping-below-status-bar

반응형