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.