159

ステータスバーのアイコンの色(ステータスバーの色ではなくcolorPrimaryDark) を変更できるかどうか疑問に思っていましたここに画像の説明を入力 。このステータスバーに次のものが必要だとしましょう:
<item name="colorPrimaryDark">@android:color/white</item>

黒のアイコン、それは可能ですか?

ありがとう。

編集:

M 開発者プレビューの新機能: windowLightStatusBar。テーマでこれをオンにすると、暗い前景を使用するようにシステムに指示され、明るい色のステータス バーに役立ちます。M プレビューには、通知アイコンが白のままで、システム ステータス アイコンが正しく半透明の黒に変わるというバグがあるようです。

from: Roman Nurik Google+投稿 ここに画像の説明を入力

4

9 に答える 9

236

はい、グレー (カスタム カラーなし) に変更することは可能ですが、これは API 23 以降でのみ機能します。values-v23/styles.xml に追加するだけで済みます。

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

ここに画像の説明を入力

于 2015-11-24T13:23:42.060 に答える
122

@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);
    }
}
于 2016-06-08T06:06:36.180 に答える
51

API レベルが 23 より小さい場合は、この方法で使用する必要があります。v21/styleの下でこれを宣言するとうまくいきました。

<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item>
        <item name="android:windowLightStatusBar" tools:targetApi="23">true</item>
于 2016-12-30T04:45:01.827 に答える
-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);
于 2018-11-16T13:55:58.070 に答える