[android] 상태 표시 줄을 검정색 아이콘이있는 흰색으로 만들려면 어떻게해야합니까?

내 앱의 상태 표시 줄 색상을 변경하여 검은 색 아이콘이있는 흰색 (기본 흰색 아이콘이있는 검은 색 대신)이되도록 변경하고 싶습니다. 이 작업을 수행 할 방법이 있습니까?



답변

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


답변

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


답변

수동으로 커스터마이징하기 위해 전체 롬을 제어하지 않는 한 이런 방법은 없습니다. 내가 제안하는 것은 Google 드라이브와 같이 테마를 통해 상태 표시 줄 색상에 밝은 회색 색상을 사용하는 것입니다.

편집 : 이것이 안드로이드 M에서 변경되었으므로 @Wrekcker 답변을 참조하십시오.


답변

나는 같은 문제가 있었다.

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>