ステータスバーを黒のアイコンで白にするにはどうすればよいですか?


83

アプリのステータスバーの色を変更して、(デフォルトの黒と白のアイコンではなく)白と黒のアイコンを表示したいと思います。これを行う方法はありますか?


デフォルトのテーマを変更する
Rohit5k2 2014

通知バーのアイコンが黒に変わるテーマに変更する必要がありますか?
ジョン2014

カスタムテーマを使用します。まず、stackoverflow.com
questions / 8024706 /

では、Androidのガイドラインに従い、白い通知アイコンが付いているアプリについてはどうでしょうか。アプリ内にあるときに、ユーザーにどのように表示されると思いますか。
tyczj 2014

2
ただし、他のアプリリソースの色を変更することはできません。実際、ロリポップは何があってもすべてのアイコンを白にします
tyczj 2014

回答:


125

Android M(apiレベル23)を使用すると、android:windowLightStatusBar属性を持つテーマからこれを実現できます。

編集:

Pdroidが述べたように、これはプログラムで達成することもできます。

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 

2
プログラムで設定できますか?
busylee

@busyleeテーマの子を作成し、そこで変更して、activity.getTheme.setTo(Theme another)で適用できると思います
バグラオラル2015年

こんにちは@wreckerアプリケーション通知アイコンにも同じ問題があります。テーマにandroid:windowLightStatusBar = trueを追加し、Android Mでテストしていますが、サードパーティのランチャーアプリケーション(Nova Launcher)を使用してテーマを変更しても、白い通知アイコンが灰色に変わりません。私はすべての可能な方法を試しましたが、まだ修正できていません。あなたが私を助けることができればそれは感謝するでしょう。
Sujit 2016年

1
@busyleeはい、次のメソッドを使用していつでも設定できます。View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); それは答えに追加されるべきです
Pdroid 2017年

6
22以前のバージョンで使用したい場合はどうなりますか?
Dhara Patel 2017年

45

灰色のアイコンで白いステータスバーを作成することは可能です。たとえば、SDK> = 23の場合は次のようになります(ドキュメントを参照)。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowLightStatusBar">true</item>
</style>

styles.xmlで、colorPrimaryを白またはプログラムで設定します

getWindow().setStatusBarColor(Color.WHITE);

2
21ではなく
VadimKotov19年

ちょっと@VadimKotovは実際に私が書いたSDK >= 23が、いくつかの理由で@being_sohelkhanは、私のオリジナルの答えを編集した... stackoverflow.com/posts/46897243/revisionsを
Rammgarot

15

Kotlinでの私のアクティビティに追加されました:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
                window.statusBarColor = Color.WHITE
            }

7

これをあなたのスタイルに追加するだけです

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>

android:windowDrawsSystemBarBackgroundstrueに設定します*。これは、その説明が以下に示されているフラグです。

このウィンドウがシステムバーの背景の描画を担当しているかどうかを示すフラグ。trueでウィンドウがフローティングでない場合、システムバーは透明な背景で描画され、このウィンドウの対応する領域は{@link android.R.attr#statusBarColor}および{@linkandroid.Rで指定された色で塗りつぶされます。 .attr#navigationBarColor}。{@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}に対応します。


1

Kotlinでこのように使用できます

 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

必ずonCreate()前に電話してくださいsetContentView()


0

手動でカスタマイズするためにROM全体を制御できる場合を除いて、このような方法はありません。私があなたに提案することは、グーグルドライブがするようにあなたのテーマを通してステータスバーの色に薄い灰色を使うことです。

編集:これはAndroid Mで変更されたため、@ Wrekckerの回答を参照してください。


1
Android M
AmirDoraで

-1

私も同じ問題を抱えていました。

私はRelativeLayoutのような通常のレイアウトを使用するとそれが機能しないことに気づきました。しかし、CordinatorLayoutのようなサポートライブラリからのものに切り替えると、ようやく機能し始めました。これを試して。

  <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context=".Activities.Activity">


        <android.support.v7.widget.Toolbar
            android:id="@+id/tb_activity"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />


    </android.support.design.widget.CoordinatorLayout>

<*********他の属性の下************>

スタイル

<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

そしてマニフェストで

<activity
            android:name=".Activities.MyActivity"
            android:label="Activity"
            android:theme="@style/AppTheme.NoActionBar">
        </activity>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.