는 상태 표시를 변경할 수 있는지 궁금 해서요 아이콘 색상 ( 없는 상태 표시 색상 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>
답변
설정 windowLightStatusBar
에 true
여부를 미 휴대 전화와 함께 작동, 일부 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);