web-dev-qa-db-ja.com

ロリポップのアプリに合わせてステータスバーの色を変更するにはどうすればいいですか? [アンドロイド]

新しいLollipopアップデートでは、ネイティブのGoogleアプリではステータスバーの色が実行中のアプリのアクションバーと一致するように変化することに気付きました。私はそれがTwitterアプリ上にもあるのを見ているので、私はそれがそれをすることができるのがグーグルだけではないと思います。

可能であれば、誰もがこれを行う方法を知っていますか?

95
Briscoooe

ステータスバーの色を変更するには、 setStatusBarColor(int color) を使用します。 Javadocによると、ウィンドウにいくつかのフラグを設定する必要もあります。

コードの作業断片:

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(ContextCompat.getColor(activity, R.color.example_color));


覚えておいてください マテリアルデザインのガイドラインに従う ステータスバーの色とアクションバーの色は違うはずです:

  • ActionBar原色500色を使うべきです
  • StatusBar原色700色を使用する必要があります

下のスクリーンショットを見てください。

enter image description here

216
klimat

これをstyles.xmlに追加するだけです。 colorPrimaryはアクションバー用で、colorPrimaryDarkはステータスバー用です。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="Android:colorPrimary">@color/primary</item>
    <item name="Android:colorPrimaryDark">@color/primary_dark</item>
</style>

開発者Androidからのこの写真はカラーパレットについての詳細を説明しています。これについてもっと読むことができます link

enter image description here

47
Gjoko Bozinov

ステータスバーの色を設定するもう1つの方法は、style.xmlを使用することです。

これを行うには、res/values-v21フォルダの下にstyle.xmlファイルを次の内容で作成します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Android:Theme.Material">
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="Android:colorPrimaryDark">@color/blue_dark</item>
    </style>
</resources>

編集:コメントで指摘されているように、AppCompatを使用するとコードが異なります。ファイル内ではres/values/style.xml代わりに使用してください:

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">   
    <!-- Set AppCompat’s color theming attrs -->
    <item name="colorPrimary">@color/my_awesome_red</item>
    <item name="colorPrimaryDark">@color/my_awesome_darker_red</item>
    <!-- Other attributes -->
</style>
40

ステータスバーの色を設定するには、res/values-v21フォルダの下に次の内容のstyle.xmlファイルを作成します。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppBaseTheme" parent="AppTheme">
        <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="Android:statusBarColor">@color/blue</item>
    </style>

</resources>
20

また、アクティビティごとにstatus-barの色を変えたい場合( fragments )、次の手順で行うことができます(API 21以降で作業)。

まずvalues21/style.xmlを作成して、次のコードを入力します。

 <style name="AIO" parent="AIOBase">
            <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
            <item name="Android:windowContentTransitions">true</item>
    </style>

次に、以下のようにWhite | Darkテーマをvalues/style.xmlに定義します。

 <style name="AIOBase" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_primary_dark</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="Android:textColorPrimary">@Android:color/black</item>
        <item name="Android:statusBarColor" tools:targetApi="Lollipop">@color/color_primary_dark
        </item>
        <item name="Android:textColor">@color/gray_darkest</item>
        <item name="Android:windowBackground">@color/default_bg</item>
        <item name="Android:colorBackground">@color/default_bg</item>
    </style>


    <style name="AIO" parent="AIOBase" />

    <style name="AIO.Dark" parent="AIOBase">
        <item name="Android:statusBarColor" tools:targetApi="Lollipop">#171717
        </item>
    </style>

    <style name="AIO.White" parent="AIOBase">
        <item name="Android:statusBarColor" tools:targetApi="Lollipop">#bdbdbd
        </item>
    </style>

またあなたのmanifest.xmlにテーマを適用することを忘れないでください。

3
Amir

2つのスタイルを使用する場合は、この行をv21のスタイルで追加してください。

  <item name="Android:statusBarColor">#43434f</item>
3
Amit Walke

Androidプレロリポップデバイスでは、SystemBarTintManagerから実行できます。Androidスタジオを使用している場合は、Systembartint libをGradleファイルに追加するだけです。

dependencies {
    compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
    ...
}

それからあなたの活動に

// create manager instance after the content view is set
SystemBarTintManager mTintManager = new SystemBarTintManager(this);
// enable status bar tint
mTintManager.setStatusBarTintEnabled(true);
mTintManager.setTintColor(getResources().getColor(R.color.blue));
2