내 앱의 상태 표시 줄 색상을 변경하여 검은 색 아이콘이있는 흰색 (기본 흰색 아이콘이있는 검은 색 대신)이되도록 변경하고 싶습니다. 이 작업을 수행 할 방법이 있습니까?
내 앱의 상태 표시 줄 색상을 변경하여 검은 색 아이콘이있는 흰색 (기본 흰색 아이콘이있는 검은 색 대신)이되도록 변경하고 싶습니다. 이 작업을 수행 할 방법이 있습니까?
답변:
Android M (api 레벨 23)을 사용하면 android:windowLightStatusBar
속성 이있는 테마에서이를 달성 할 수 있습니다 .
편집하다 :
Pdroid가 언급했듯이 이것은 프로그래밍 방식으로도 달성 할 수 있습니다.
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
회색 아이콘이있는 흰색 상태 표시 줄을 만들 수 있습니다 (예 : SDK> = 23의 경우 다음과 같이) ( 문서 참조 )
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowLightStatusBar">true</item>
</style>
styles.xml에서을 colorPrimary
흰색 또는 프로그래밍 방식으로 설정하십시오 .
getWindow().setStatusBarColor(Color.WHITE);
SDK >= 23
하지만 어떤 이유로 @being_sohelkhan 내 원래 대답은 ... 편집 한 stackoverflow.com/posts/46897243/revisions을
Kotlin에서의 활동에 방금 추가했습니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.WHITE
}
당신의 스타일에 이것을 추가하십시오
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
세트는 안드로이드 : windowDrawsSystemBarBackgrounds을 에 사실 * . 아래에 설명이있는 플래그입니다.
이 창이 시스템 표시 줄의 배경을 그리는 데 책임이 있는지 여부를 나타내는 플래그입니다. true이고 창이 부동 상태가 아니면 시스템 표시 줄이 투명한 배경으로 그려지고이 창의 해당 영역이 {@link android.R.attr # statusBarColor} 및 {@link android.R에 지정된 색상으로 채워집니다. .attr # navigationBarColor}. {@link android.view.WindowManager.LayoutParams # FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}에 해당합니다.
Kotlin에서 이런 식으로 사용할 수 있습니다.
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
onCreate()
전에 전화를하세요setContentView()
나는 같은 문제가 있었다.
RelativeLayout과 같은 일반 레이아웃을 사용할 때 작동하지 않는다는 것을 알았습니다. 그러나 CordinatorLayout과 같은 지원 라이브러리에서 온 것으로 전환했을 때 마침내 작동하기 시작했습니다. 이 시도.
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".Activities.Activity">
<android.support.v7.widget.Toolbar
android:id="@+id/tb_activity"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CoordinatorLayout>
<********* 다른 속성 아래 ************>
스타일
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
그리고 매니페스트에서
<activity
android:name=".Activities.MyActivity"
android:label="Activity"
android:theme="@style/AppTheme.NoActionBar">
</activity>