Android 상태 표시 줄 아이콘 색상


131

는 상태 표시를 변경할 수 있는지 궁금 해서요 아이콘 색상 ( 없는 상태 표시 색상 colorPrimaryDark) 여기에 이미지 설명 입력 나는이 상태 표시 줄에 원하는하자 말을 :
<item name="colorPrimaryDark">@android:color/white</item>

검은 색 아이콘이 가능합니까?

감사.

편집하다:

M 개발자 미리보기의 새로운 기능 : windowLightStatusBar. 테마에서이 기능을 켜면 시스템이 어두운 전경을 사용하도록 지시하여 밝은 색상의 상태 표시 줄에 유용합니다. M 미리보기에는 알림 아이콘이 흰색으로 유지되는 버그가있는 것처럼 보이지만 시스템 상태 아이콘은 반투명 검은 색으로 올바르게 변경됩니다.

from : Roman Nurik Google+ 게시물 여기에 이미지 설명 입력

답변:


24

롤리팝 이후로. Android 5.0부터 가이드 라인은 다음과 같이 말합니다.

알림 아이콘은 완전히 흰색이어야합니다.

그렇지 않더라도 시스템은 아이콘의 알파 채널 만 고려하여 흰색으로 렌더링합니다.

해결 방법

Lollipop에 컬러 아이콘을 표시하는 유일한 방법은 targetSdkVersion값 을 낮추는 것입니다 <21.하지만 지침을 따르고 흰색 아이콘 만 사용하는 것이 더 낫다고 생각합니다.

그래도 컬러 아이콘을 원하면 새로운 v4 지원 라이브러리 의 DrawableCompat.setTint 메서드를 사용할 수 있습니다 .


3
나는 약간의 구글 검색을했고 이것에 대한 적절한 방법을 찾을 수 없었지만 안드로이드 지침에 아이콘이 흰색이어야한다고 말하면 흰색입니다 :) 감사합니다!
GuilhE

11
이에 대한 더 나은 해결 방법이 있어야합니다. 여러 상용 앱이 색상을 사용하고 있습니다. 이것은 Google의 끔찍하게 멍청한 디자인 움직임입니다. 그들은 다시 무엇을 생각하고 있었습니까?
not2qubit

Google의 뉴스 앱을 보면 흰색 상태 표시 줄 아이콘이 없습니다. play.google.com/store/apps/…
Adam Hurwitz

6
<item name="android:windowLightStatusBar">true</item>나를 위해 일했습니다.
Adam Hurwitz

Gmail 앱 (2019-04 년에 출시됨)이 상태 표시 줄에 흰색과 아이콘 / 텍스트가 진한 회색으로 표시되는 이유가 궁금합니다.
Daniel F

201

예, 회색 (사용자 지정 색상 없음)으로 변경할 수 있지만 이는 API 23 이상에서만 작동합니다. values-v23 / styles.xml에만 추가하면됩니다.

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

여기에 이미지 설명 입력


2
하지만 메뉴 항목 아이콘 색상이 여전히 흰색입니다. 메뉴 항목 아이콘 색상을 검은 색으로 변경하는 방법은 무엇입니까?
Mateen Chaudhry

107

@eOnOe는 xml을 통해 상태 표시 줄 색조를 변경하는 방법에 대해 답변했습니다. 그러나 코드에서 동적으로 변경할 수도 있습니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    View decor = getWindow().getDecorView();
    if (shouldChangeStatusBarTintToDark) {
        decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    } else {
        // We want to change tint color to white again.
        // You can also record the flags in advance so that you can turn UI back completely if
        // you have set other flags before, such as translucent or full screen.
        decor.setSystemUiVisibility(0);
    }
}

좋은 해결책! SDK 버전을 변경할 필요가 없었기 때문에 내 애플리케이션에 정말 적합했습니다.
Vitor Braga

2
더 정확합니다 : decorView.setSystemUiVisibility (decorView.getSystemUiVisibility () | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
Anton Savenok

이것은 내 하루를 구했습니다! @ywwynm 감사합니다!
ReGaSLZR

이것은 최상의 솔루션이며 MI 전화에서도 작동합니다. 당신은 구세주입니다!
Numanqmr

ShouldChangeStatusBarTintDark는 무엇입니까 ??
Ibramazin

48

API 레벨이 23보다 작은 경우이 방법을 사용해야합니다. 그것은 나를 위해 이것을 v21 / style 에서 선언했습니다 .

<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item>
        <item name="android:windowLightStatusBar" tools:targetApi="23">true</item>

1
23을 의미합니다. :(
meditat

아니요, v21 / 스타일에 대해 잘 모르시면이 링크를 방문하십시오. stackoverflow.com/questions/28465064/creating-styles-v21-xml
Ritesh

v21 한정자가있는 styles.xml에 배치 되더라도 api 23 이상을 실행하는 장치에서만 작동합니다. 사실 AS Lint는 이러한 항목을 지원하지 않는 Android 버전에서는 무시된다는 경고와 함께 이러한 항목을 강조 표시합니다. tools:targetApi="23"부분은이 경고를 억제하는 린트를 알려줍니다.
Subaru Tashiro

5

설정 windowLightStatusBartrue여부를 미 휴대 전화와 함께 작동, 일부 MEIZU 전화는, Blackview 폰, WileyFox 등 내가 한 발견 과 같은 해킹 미 및 MEIZU 장치에 대한합니다. 이것은 성능 문제에 대한 포괄적 인 해결책은 아니지만 누군가에게 유용 할 수 있습니다.

그리고 고객에게 상태 표시 줄 (예 : 흰색)에 색상을 지정하는 것은 좋지 않다고 말하는 것이 좋습니다. 다른 해킹을 사용하는 대신 colorPrimaryDark지침에 따라 적절하게 정의하는 것이 좋습니다.


-3

예, 변경할 수 있습니다. 하지만 API 22 이상에서는 NotificationCompat.Builder 및 setColorized (true) 사용합니다.

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, context.getPackageName())
                .setContentTitle(title)
                .setContentText(message)
                .setSmallIcon(icon, level)
                .setLargeIcon(largeIcon)
                .setContentIntent(intent)
                .setColorized(true)
                .setDefaults(0)
                .setCategory(Notification.CATEGORY_SERVICE)
                .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
                .setPriority(NotificationCompat.PRIORITY_HIGH);

확실합니까? 문서에 "설정되면 setColor (int)로 설정된 색상이이 알림의 배경 색상으로 사용됩니다."라고되어 있습니다. 및 "대부분의 스타일에서 색상은 알림이 포 그라운드 서비스 알림 용인 경우에만 적용됩니다." 아이콘의 전경색을 변경할 수없는 것 같습니다.
Dominique

이는 포 그라운드 알림 전용이며 알림 아이콘이 아닌 알림 항목에만 적용됩니다.
Subaru Tashiro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.