상태 표시줄 아래에 겹치는 도구 모음
활동에 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"
레이아웃의 루트 뷰(이 경우 선형 레이아웃)에 표시됩니다.
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
'programing' 카테고리의 다른 글
Oracle 이벤트 로그는 어디에 있습니까? (0) | 2023.08.31 |
---|---|
각도 이유 별표(*) (0) | 2023.08.31 |
스팬 요소에 대해 마진탑이 작동하지 않습니까? (0) | 2023.08.31 |
텍스트 보기의 스타일을 프로그래밍 방식으로 설정 (0) | 2023.08.26 |
구성: 오류: MySQL include dir를 찾지 못했습니다. (0) | 2023.08.26 |