新しいLollipopアップデートでは、ネイティブのGoogleアプリではステータスバーの色が実行中のアプリのアクションバーと一致するように変化することに気付きました。私はそれがTwitterアプリ上にもあるのを見ているので、私はそれがそれをすることができるのがグーグルだけではないと思います。
可能であれば、誰もがこれを行う方法を知っていますか?
ステータスバーの色を変更するには、 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));
覚えておいてください マテリアルデザインのガイドラインに従う ステータスバーの色とアクションバーの色は違うはずです:
下のスクリーンショットを見てください。
これを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 。
ステータスバーの色を設定するもう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>
ステータスバーの色を設定するには、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>
また、アクティビティごとに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
にテーマを適用することを忘れないでください。
2つのスタイルを使用する場合は、この行をv21のスタイルで追加してください。
<item name="Android:statusBarColor">#43434f</item>
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));