Android 5.0 Lollipop in Android Studio。のAppCompat-v7:21.0.0
サポートライブラリを使用しています。私の問題は、ステータスバーの色がcolorPrimaryDark
values/styles.xml
ファイルでは、xmlレイアウトプレビューとエミュレーターの両方で黒で表示されます。
それで何が問題なのでしょうか?何か不足していますか?私にお知らせください。ありがとう。
編集:Pre-Lollipopバージョンでステータスバーの色を変更することはできないという事実を知っています。 XMLレイアウトエディタープレビューとエミュレーターの両方がAPIレベル21(5.0 Lollipop)に設定されています。ただし、ステータスバーは、colorPrimaryDark
で設定した色のままではありません。 styles.xml
でstatusBarColor
を試してみましたが、役に立ちませんでした。まだ黒です。
ALSO:同様の質問で、minSdkVersion
を21に設定するように勧められた回答の1つを見つけました。作業。また、APIレベル15以上のデバイスでアプリを実行したいです。
これをお読みください:これを有効にするには、ウィンドウがシステムバーの背景を描画している必要があります
Android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
しかし
Android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
設定しないでください( Source )
そのフラグを追加する方法がわからない場合:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
これは私のために働いた:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(R.color.some_color));
}
ターゲットSDKバージョンを21に設定しましたか?ターゲットSDKバージョンを19のままにしておくと、同じ問題が発生しました。minSDKをそれより低いものにしておくことができます。
そしてもちろん、適切なテーマから継承し、アクティビティがそれを使用することを確認する必要があります。
nexus7 5.1.1でテストする
style.xml v21/v22で設定が機能しない
<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
<item name="Android:statusBarColor">@Android:color/holo_red_dark</item>
しかし
活動性に設定
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(Android.R.color.holo_red_dark));
}
私の仕事です
編集しているかどうかを確認するstyles.xml
in values-v21
フォルダー。 SDKバージョンを21に設定すると、styles.xml
values
フォルダー(ただし、そうする必要があります)。
ColorPrimaryDarkを設定して、Lollipop(5.0)より前のステータスバーの色を変更することはできません。 この記事 を参照してください。
古いプラットフォームでは、AppCompatは可能な限り色のテーマをエミュレートします。現時点では、これはアクションバーと一部のウィジェットの色付けに限定されています。
私の場合 values-v21/styles.xml
には、values/style.xml
with colorPrimaryDark
:
<item name="Android:statusBarColor">@Android:color/transparent</item>
これを取り除くことは私にとってはうまくいきました。
v22-appcompat
彼ら(Android)はAndroidスタジオプレビューでステータスバーの色のレンダリングを追加しました!
時間について...とにかく、appcompat
ライブラリが最新バージョンであるv22.0。+に更新されていることを確認してください。
乾杯!
これは私のために働いた。スタイルからステータスバーの色を削除しました。フラグを追加して、好きな色を入れてください
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(R.color.your_color));
}
古いアプリに取り組んでいて、それをマテリアルスタイルに変換しようとしていました。コードとすべては問題ありませんでしたが、ステータスバーのLollipopデバイスの色合いを妨げる唯一の間違いは"TargetSDKVersion" in build.gradleでした。 21未満に設定されました。21に変更すると、ステータスバーの色付けが機能し始めました。
私の場合、犯人はjfeinstein10/SlidingMenu
ライブラリでした。ライブラリをAndroid navigation drawer
に置き換え、ステータスバーの色が正しく表示されるようになりました。