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


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

CoordinatorLayoutstackoverflow.com/a/47906087/2201814 : 당신이 시도 할 수 있습니다
MHSFisher

안드로이드 설정해야합니다 루트보기로 androidx.coordinatorlayout.widget.CoordinatorLayout와 함께 문제를 직면하고있는 사람들을 위해 .. 아래 SO 사용자 중 하나에 의해 제안 fitsSystemWindows을 = "거짓"... 나를 위해 일한 .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
이 답변은 내 문제를 해결했습니다. 그러나 지금은 0 패딩으로 모든 안드로이드 토스트를 찾습니다!
kds23

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

10

나에게 문제는 예제에서 무언가를 복사하여 사용했다는 것입니다.

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

이것을 제거하면 내 문제가 해결되었습니다.


10

대답 중 어느 것도 나를 위해 효과가 없었지만 이것은 android:fitSystemWindows루트보기에서 설정 한 후에 마침내 작동했습니다 (스타일 v21에서 설정했습니다).

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

당신이 있는지 확인 하지 않습니다 기본적으로 그대로 둔다을로 다음과 같은 라인을 가지고 :

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