태그 보관물: android-statusbar

android-statusbar

Android 상태 표시 줄 아이콘 색상 변경할 수 있는지

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

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

감사.

편집하다:

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

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



답변

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

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

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

해결 방법

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

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


답변

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

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

여기에 이미지 설명 입력


답변

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


답변

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

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


답변

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

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


답변

예, 변경할 수 있습니다. 하지만 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);


답변