Android에서 상태 표시 줄 색상을 변경하는 방법은 무엇입니까?


427

우선 안드로이드 상태 표시 줄의 배경색을 변경하는 방법 과 같이 중복되지 않습니다.

탐색 표시 줄과 동일한 상태 표시 줄 색상을 변경하는 방법

상태 표시 줄 색이 탐색 표시 줄 색과 동일하게하고 싶습니다.

여기에 이미지 설명을 입력하십시오


2
kitkat @MarkBuikema 이후에 가능
— codercat

4
Niels가 제안한 것처럼 v21부터는 테마 속성이 android:statusBarColor있습니다. 에 추가하면됩니다 values-v21/styles.xml.
— Levite

@MarkBuikema 어떻게 루트 액세스와 관련이 있습니까?
— 스티브는 moretz

답변:


625

Android 5.0 Lollipop colorPrimaryDark은 테마 값에 따라 상태 표시 줄을 자동으로 색칠하는 Material Design 테마를 도입했습니다 .

버전 21부터 라이브러리 support-v7-appcompat 덕분에 장치 사전 롤리팝에서 지원됩니다. Chris Banes의 지원 appcompat v21에 대한 블로그 게시물

여기에 이미지 설명을 입력하십시오

공식 Android 개발자 웹 사이트에서 머티리얼 테마에 대해 자세히 알아보십시오


29
어떤 이유로 colorPrimaryDark 속성이 작동하지 않습니다. 에뮬레이터 V21에 시도
— 일탈

3
레이아웃 미리보기가 아닌 에뮬레이터의 변경 사항을 확인해야합니다. [표시되지 않음]
— Mightian

6
colorPrimaryDark가 API 18 에뮬레이터에서 작동하지 않습니다. appcompat와 관련된 기사에서 : "이전 플랫폼에서 AppCompat은 가능한 경우 색상 테마를 에뮬레이트합니다. 현재는 작업 표시 줄 및 일부 위젯을 색칠하는 것으로 제한됩니다."
— Adam Johns

12
상태 표시 줄에서 글꼴 색을 변경하는 것은 어떻습니까? 문서는 그것에 대해 아무 말도하지 않습니다.
— Scott Biggs

나는 같은 방식으로 시도했다. 그것은 대부분의 모든 장치에서 완벽하게 작동하지만 OS 5.0.1을 실행하는 삼성 갤럭시 s4가 있으며이 전화 상태 표시 줄 색상은 검은 색입니다. 그리고 다른 활동으로 이동하여 이전 활동으로 다시 돌아 오면 상태 표시 줄 색상이 앱 테마 색상으로 변경됩니다. 이것이 일어나는 이유
— Hitesh Kamani

364

최신 정보:

사탕 과자:

public abstract void setStatusBarColor (int color)

API 레벨 21에 추가됨

Android Lollipop은 앱에서 상태 표시 줄의 색상을 변경하여 몰입 형 사용자 경험을 제공하고 Google과 조화를 이루는 기능을 제공했습니다 Material Design Guidelines.

에 window.setStatusBarColor소개 된 새로운 방법을 사용하여 상태 표시 줄의 색상을 변경하는 방법은 다음과 같습니다 API level 21.

상태 표시 줄의 색상을 변경하려면 창에 두 개의 추가 플래그를 설정해야합니다. FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS플래그 를 추가하고 플래그를 지워야합니다 FLAG_TRANSLUCENT_STATUS.

근무 코드 :

import android.view.Window;

...

Window window = activity.getWindow();

// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

// finally change the color
window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));

외부 개발자 참조 : setStatusBarColor (int)

예 : 모든 곳에서 재료 설계

Chris Banes 블로그-appcompat v21 : 롤리팝 이전 장치의 재료 설계!

여기에 이미지 설명을 입력하십시오

transitionName보기 배경이 될 것입니다 android:status:background.


2
이전 버전과의 호환성을위한 솔루션이 있습니까?
— Adam Hurwitz

Niels의 답변에서 언급했듯이 androiddocs.com/training/material/theme.html 파일 android:statusBarColor에 다음 과 같이 values-v21/styles.xml파일 을 설정하여 테마 / 스타일을 통해 상태 표시 줄 색상을 구성 할 수도 있습니다.<item name="android:statusBarColor">@color/primary_color</item>
— JL West

4
상태 표시 줄 색상을 흰색으로 변경할 수는 있지만 배터리와 같은 알림 아이콘을 볼 수 없습니다. 어떻게 해결할 수 있습니까?
— MNFS

1
당신은 당신이 나를 얼마나 도왔는지 전혀 모른다 ..
— Abhishek Dhyani

222

Lollipop에서이를 활성화하려면 values-v21 / styles.xml입니다.

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>

34
이것은 최소 API 21을 요구합니다
— Roman

49
이것이 아마도 그가 값을 v-v21 / styles.xml에 넣도록 제안한 이유 일 것입니다. ;-) 지금까지 가장 정확한 답변 인 것 같습니다!
— Levite

그러나 이것은 여전히 ​​경고를 표시합니다!?
— Nihal Sharma

compat의 기능은 무엇입니까? 상태 표시 줄
— blackHawk

targeApi단일 스타일 파일을 유지하려는 경우 속성 을 추가 할 수 있습니다 . 참조에 대한 내 대답 읽기 stackoverflow.com/a/48565459/4291272
— 파이잘 샤이 크

50

이 기능은 라이브러리없이 수행 할 수있는 매우 쉬운 방법입니다. OS 버전이 kitkat에서 지원되지 않는 경우 아무 일도 일어나지 않습니다. 나는이 단계를 수행

  1. 내 XML 에서이보기 위에 추가했습니다.
<View
        android:id="@+id/statusBarBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

그런 다음이 방법을 만들었습니다.

 public void setStatusBarColor(View statusBar,int color){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
           Window w = getWindow();
           w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
           //status bar height
           int actionBarHeight = getActionBarHeight();
           int statusBarHeight = getStatusBarHeight();
           //action bar height
           statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
           statusBar.setBackgroundColor(color);
     }
}

또한 액션 바 및 상태 표시 줄 높이를 얻으려면 두 가지 방법이 필요합니다.

public int getActionBarHeight() {
    int actionBarHeight = 0;
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
       actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }
    return actionBarHeight;
}

public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

그런 다음 상태 표시 줄 색상을 설정하기 위해이 줄만 필요합니다.

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));

1
뷰 요소를 어디에 두어야합니까? 메인 레이아웃 위에 있어야합니까?
— Emil Reña Enriquez

예. 당신의 XML에서. 그것의 상단에.
— itzhar

주의 : android> = 19 API에서만 작동합니다. 제 경우에는 16 세부터 지원이 필요합니다
— Anton Kizema

setStatusBarColor (findViewById (android.R.id.statusBarBackground), getResources (). getColor (android.R.color.white));
— AndroidLad

34

@Niels는 values-v21 / styles.xml에 배치해야한다고 말했습니다.

<item name="android:statusBarColor">@color/black</item>

그러나 tools:targetApi="lollipop"다음과 같이 단일 styles.xml을 원하면 추가 하십시오.

<item name="android:statusBarColor" tools:targetApi="lollipop">@color/black</item>

3
"targetApi"에 대해 감사합니다. 테마가 여러 파일에 퍼지는 것을 좋아하지 않습니다. :)
— plexus

31

음, Izhar 솔루션은 괜찮 았지만 개인적으로 다음과 같은 코드를 피하려고합니다.

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//Do what you need for this SDK
};

또한 코드를 복제하는 것을 좋아하지 않습니다. 귀하의 답변에 모든 활동에 이러한 코드 줄을 추가해야합니다.

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));

그래서 Izhar 솔루션을 가져 와서 XML을 사용하여 동일한 결과를 얻었습니다. StatusBar status_bar.xml에 대한 레이아웃 만들기

<View xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="@dimen/statusBarHeight"
     android:background="@color/primaryColorDark"
     android:elevation="@dimen/statusBarElevation">

높이 및 표고 속성을 확인하십시오.이 값은 values-v19, values-v21 아래로 설정됩니다.

include, main_activity.xml을 사용하여이 레이아웃을 활동 레이아웃에 추가하십시오.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Black" >

<include layout="@layout/status_bar"/>
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
//The rest of your layout       
</RelativeLayout>

툴바의 경우 상단 여백 속성을 추가하십시오.

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@color/primaryColor"
app:theme="@style/MyCustomToolBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="@dimen/toolbarElevation"
android:layout_marginTop="@dimen/appBarTopMargin"
android:textDirection="ltr"
android:layoutDirection="ltr">

appTheme style-v19.xml 및 styles-v21.xml에서 windowTranslucent attr을 추가하십시오.

styles-v19.xml, v21 :

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

마지막으로 dimens-v19, dimens-v21에 툴바 topMargin의 값과 KitKat보다 작은 경우 statusBarHeight : dimens.xml의 높이를 추가하십시오.

<resources>
<dimen name="toolbarElevation">4dp</dimen>
<dimen name="appBarTopMargin">0dp</dimen>
<dimen name="statusBarHeight">0dp</dimen>
</resources>

KitKat 이상에서 상태 표시 줄 높이는 항상 24dp dimens-v19.xml입니다.

<resources>
<dimen name="statusBarHeight">24dp</dimen>
<dimen name="appBarTopMargin">24dp</dimen>
</resources>

Lolipop의 경우 dimens-v21.xml, 필요한 경우 높이를 추가하십시오.

<resources>
<dimen name="statusBarElevation">4dp</dimen>
</resources>

Jellybean KitKat 및 Lollipop의 결과입니다.

여기에 이미지 설명을 입력하십시오


따라서 수표를 코드에 넣는 대신 XML로 넣었습니다. Kitkat에서 그가 얻은 것과 마찬가지로 솔루션이 작동합니다.
— 안드로이드 개발자

26

이 간단한 코드를 사용할 수 있습니다 :

코 틀린의 원 라이너 :

window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)

Java 및 수동 버전 확인을 통한 독창적 인 답변 :

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light, this.getTheme()));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light));
}

을 사용하여이를 더욱 단순화 할 수 있습니다 ContextCompat. Kotlin에서 그것은 단지 이것입니다 :window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
— sunadorer

내가 그것을 썼을 때 나는 kotlin을 시도하지 않았다. 왜 당신은 답을 편집하지 않고 그것을 승인 할 수 있습니다 :)
— steve moretz

좋은 생각. 나는 미래의 방문객들을위한 쉬운 참고 자료로 답변에 나의 제안을 포함시켰다
— sunadorer

상태 표시 줄 색상이 Build.VERSION_CODES.M 이상으로 변경되었습니다. Lollipop
— Muhammed Haris에서

@ MuhammedHaris 그것은 kotlin 또는 Java 코드를 사용합니까?
— 스티브 모 레츠

23

상태 바의 색상 인 "colorPrimaryDark"를 변경하는 res / values ​​/ styles.xml 에 새 테마를 작성하십시오 .

<style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimaryDark">@color/colorGray</item>
</style>

그리고 AndroidManifest.xml 의 활동 테마 를 원하는 것으로 수정하십시오 . 다음 활동에서는 원래 테마를 선택하여 원래 색상으로 다시 색상을 변경할 수 있습니다.

<activity
    android:name=".LoginActivity"
    android:theme="@style/AppTheme.GrayStatusBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

이것은 res / values ​​/ colors.xml의 모습입니다 :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#c6d6f0</color>
    <color name="colorGray">#757575</color>
</resources>

1
나는 이것이 가장 간단하지만 가장 깨끗한 해결책이라고 생각합니다. 최소 API 수준이 21 일 필요는 없으며 간단한 재정의 만하면됩니다. 더 많은 투표권이 있습니다.
— tahsinRupam

누가에서 실행하고 API 레벨을 19로 설정하면 작동하지 않습니다. 매니페스트의 응용 프로그램 노드 아래에서 android : theme을 설정하면 작동했습니다.
— AndroidDev

18

위의 롤리팝 색상을 변경하려면 styles.xml에 추가하십시오.

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

그러나 상태 표시 줄에 밝은 색상을 원하면이 줄도 추가하십시오.

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

1
감사합니다. 유용한 답변이기도합니다.
— 앤드류는

16

이 기능으로 상태 표시 줄 색상을 변경할 수 있습니다. android L에서 작동하면 API 21 이상을 의미하며와 같은 색상 문자열이 필요합니다 "#ffffff".

private void changeStatusBarColor(String color){
    if (Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.parseColor(color));
    }
}

15

탐색 요구 사항이 투명 상태 표시 줄과 겹치도록 그릴 수 있도록 프로그래밍 방식으로 상태 표시 줄 색상을 투명하게 유지하십시오 .

API를 사용하여 그렇게 할 수 없습니다

getWindow().setStatusBarColor(ContextCompat.getColor(activity ,R.color.my_statusbar_color)

해당 코드 줄 전에 모든 사람이 스택 오버플로에서 여기를 확인하면 상태 표시 줄의 투명도를

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

상태 표시 줄의 색상과 투명도 를 다음과 같이 관리 할 수 ​​있습니다 .

  • 안드로이드 4 : API에서 상태 표시 줄 색상을 관리 할 수 ​​없기 때문에 할 수있는 일이 많지 않습니다 ... 할 수있는 유일한 것은 상태 표시 줄을 반투명으로 설정하고 상태에서 UI의 색상 요소를 이동하는 것입니다 바. 이를 위해 당신은 함께 연주해야합니다

    android:fitsSystemWindows="false"

    기본 레이아웃에서. 이를 통해 상태 표시 줄 아래에 레이아웃을 그릴 수 있습니다. 그런 다음 메인 레이아웃 상단에 패딩을 가지고 놀아야합니다.

  • Android 5 이상 : 스타일을 정의해야합니다.

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

    탐색 드로어가 상태 표시 줄과 겹칠 수 있습니다.

    그런 다음 상태 표시 줄을 투명하게 유지하면서 색상을 변경하려면 상태 표시 줄 색상을

    drawerLayout.setStatusBarBackgroundColor(ContextCompat.getColor(activity, R.color.my_statusbar_color))

    drawerLayout은 다음과 같이 정의됩니다.

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

그것은없이 나를 위해 일했습니다 <item name="android:windowDrawsSystemBarBackgrounds">true</item>. 어쨌든 며칠간의 검색 끝에 실제로 작동하는 것을 발견했습니다 (현재는 Lolllipop에서만 테스트 됨). 감사합니다
— DenisGL

나는 같은 문제를 겪고 있었고 당신의 대답은 이것을 해결하는 데 도움이되었습니다.
— A.Gun

7

값의 colors.xml에서 colorPrimary를 상태 표시 줄이 될 색상으로 편집하십시오. 예를 들면 다음과 같습니다.

   <resources>
<color name="colorPrimary">#800000</color> // changes the status bar color to Burgundy
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="red">#FF0000</color>
<color name="white">#FFFFFF</color>
<color name="cream">#fffdd0</color>
<color name="burgundy">#800000</color>


7

받는 상태 표시 줄 이동의 색상 변경하려면 res/values-v21/styles.xml상태 표시 줄의 색상을

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">#0000FF</item>
    </style>
</resources>

이봐, 도와 줄래? 나는 안드로이드에 대해 전혀 모른다. 지금은 배우기 시작할 수 없다. 간단한 응용 프로그램 마녀가 html 파일을 실행합니다. # 000의 위와 아래가 내 친구에게 끔찍하기 때문에 상태 표시 줄 색상을 변경하려고합니다. 그러나 나는 단지 할 수 없다, 나는 심지어 styles.xml 파일을 찾을 수 없다 ... 내가 당신에게 내 APK를 보낼 수 있고 당신이 나에게 그것을 설정하면 나는 fckng 감사합니다!
— Thiago Soubra

6

프로그래밍 방식으로 상태 표시 줄 색상을 변경하려면 (및 장치에 Android 5.0이있는 경우). 이것은 여러 조각에서 상태 막대 색상이 다른 경우 모든 활동 에서 statusBarColor 를 변경하는 간단한 방법 이며 매우 쉬운 방법 입니다.

 /**
 * @param colorId id of color
 * @param isStatusBarFontDark Light or Dark color
 */
fun updateStatusBarColor(@ColorRes colorId: Int, isStatusBarFontDark: Boolean = true) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val window = window
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        window.statusBarColor = ContextCompat.getColor(this, colorId)
        setSystemBarTheme(isStatusBarFontDark)
    }
}

/** Changes the System Bar Theme.  */
@RequiresApi(api = Build.VERSION_CODES.M)
private fun setSystemBarTheme(isStatusBarFontDark: Boolean) {
    // Fetch the current flags.
    val lFlags = window.decorView.systemUiVisibility
    // Update the SystemUiVisibility depending on whether we want a Light or Dark theme.
    window.decorView.systemUiVisibility = if (isStatusBarFontDark) lFlags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() else lFlags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}

5

Android 4.4 이상에서 작업하려면 다음을 시도하십시오. Harpreet의 답변과이 링크를 참조하십시오. Android 및 투명 상태 표시 줄

먼저 Activity의 onCreate 메소드에서 setStatusBarColored 메소드를 호출하십시오 (util 클래스에 넣습니다). 여기에 이미지를 사용하면 색상을 사용하도록 이미지를 변경할 수 있습니다.

public static void setStatusBarColored(Activity context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    {
        Window w = context.getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        int statusBarHeight = getStatusBarHeight(context);

        View view = new View(context);
        view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        view.getLayoutParams().height = statusBarHeight;
        ((ViewGroup) w.getDecorView()).addView(view);
        view.setBackground(context.getResources().getDrawable(R.drawable.navibg));
    }
}

public static int getStatusBarHeight(Activity context) {
    int result = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = context.getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

전에: 전에

후: 후

상태 표시 줄의 색상이 변경되었지만 탐색 표시 줄이 잘 리므로 onCreate 메소드에서 탐색 표시 줄의 여백 또는 오프셋을 설정해야합니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, (int)(this.getResources().getDimension(R.dimen.navibar_height)));
        layoutParams.setMargins(0, Utils.getStatusBarHeight(this), 0, 0);

        this.findViewById(R.id.linear_navi).setLayoutParams(layoutParams);
    }

그러면 상태 표시 줄은 다음과 같습니다.

상태 표시 줄


4

이것이 KitKat에서 저에게 효과가 있었으며 좋은 결과를 얻었습니다.

public static void setTaskBarColored(Activity context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            Window w = context.getWindow();
            w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //status bar height
            int statusBarHeight = Utilities.getStatusBarHeight(context);

            View view = new View(context);
            view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            view.getLayoutParams().height = statusBarHeight;
            ((ViewGroup) w.getDecorView()).addView(view);
            view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar));
        }
    }

2

하나 더 해결책 :

final View decorView = w.getDecorView();
View view = new View(BaseControllerActivity.this);
final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get());
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight));
view.setBackgroundColor(colorValue);
((ViewGroup)decorView).addView(view);

상태 표시 줄이 화면 하단에있는 태블릿에서 작동합니까?
— guy.gc

6
여기서 'w'와 'UiUtil'은 무엇입니까?
— Manav Patadia

2

변경 colorPrimaryDark을 입술 / 값 / styles.xml 파일에 당신의 욕망 색상에

    <resources>
        <color name="colorPrimary">#800000</color>
        <color name="colorPrimaryDark">#303F9F</color> //This Line
        <color name="colorAccent">#FF4081</color>
        <color name="red">#FF0000</color>
        <color name="white">#FFFFFF</color>
       <color name="cream">#fffdd0</color>
       <color name="burgundy">#800000</color>
    </resources>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.