programing

상태 표시줄 아래에 겹치는 도구 모음

padding 2023. 8. 31. 23:41
반응형

상태 표시줄 아래에 겹치는 도구 모음

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

사용하다android:fitsSystemWindows="true"레이아웃의 루트 뷰(이 경우 선형 레이아웃)에 표시됩니다.

v21/styles.xml 파일로 설정하면 됩니다.

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

확실히

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

어떤 대답도 나에게 효과가 없었지만, 내가 설정한 후에 마침내 이것이 효과가 있었습니다.

android:fitsSystemWindows="false"

부모 활동 레이아웃 파일에서는 많은 곳에서 제안되지 않지만 저에게는 효과가 있고 하루를 절약할 수 있습니다.

나에게 문제는 예시에서 무언가를 복사해서 사용하는 것이었습니다.

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

이것을 제거하는 것만으로도 제 문제를 해결했습니다.

어떤 대답도 나에게 먹히지 않았지만, 이것은 내가 설정한 후에 마침내 작동한 것입니다.android:fitSystemWindows루트 뷰(스타일 v21에서 설정):

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

AS에서 기본적으로 지정하는 다음 행이 없는지 확인합니다.

<item name="android:statusBarColor">@android:color/transparent</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>

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

도구 모음이 상태 표시줄과 겹치지 않도록 하려면 테마에 다음 행을 추가합니다.

<item name="android:fitsSystemWindows">true</item>
<item name="android:windowTranslucentStatus">true</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>.

또는 만약 당신이 그것을 진실로 유지하고 싶다면 사용하세요.

<item name="android:fitsSystemWindows">true</item>사실대로이것을 사용할 수 있는 다른 옵션이 있습니다.사용할 수 있습니다. android:fitsSystemWindows="true"

이것은 특정 xml 파일의 루트 뷰 안에 있습니다.

언급URL : https://stackoverflow.com/questions/29738510/toolbar-overlapping-below-status-bar

반응형