web-dev-qa-db-ja.com

Android Lollipopはナビゲーションバーの色を変更します

私のアプリでは、下部のナビゲーションバーの色を変更する必要があります。多くの投稿を見ましたが、解決策が見つかりません。 appCompatライブラリを使用しています。

enter image description here

v21/styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
       <item name="Android:windowBackground">@drawable/bgpreview</item>
       <item name="Android:colorPrimary">@color/MyColor</item>
       <item name="Android:colorPrimaryDark">@color/MyColor</item>
       <item name="Android:windowContentOverlay">@null</item>
       <item name="Android:textColorPrimary">@color/MyColor</item>
       <item name="colorAccent">@color/MyColor</item>
       <!-- darker variant for the status bar and contextual app bars -->
       <item name="Android:windowContentTransitions">true</item>
       <item name="Android:windowAllowEnterTransitionOverlap">true</item>
       <item name="Android:windowAllowReturnTransitionOverlap">true</item>
       <item name="Android:windowSharedElementEnterTransition">@Android:transition/move</item>
       <item name="Android:windowSharedElementExitTransition">@Android:transition/move</item>

       <item name="windowActionBar">false</item>
       <item name="Android:textAllCaps">false</item>

</style>
98
user3065901

内部で行うことができますstyles.xmlを使用して

<item name="Android:navigationBarColor">@color/theme_color</item>

または

window.setNavigationBarColor(@ColorInt int color)

http://developer.Android.com/reference/Android/view/Window.html#setNavigationBarColor(int)

このメソッドはAndroid Lollipopで導入されたもので、APIバージョン<21では動作しません。

2番目の方法(KitKatで動作)は、マニフェストでwindowTranslucentNavigationをtrueに設定し、ナビゲーションバーの下に色付きのビューを配置します。

174
Zielony

プログラムで行う方法は次のとおりです

if (Android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {                
   getWindow().setNavigationBarColor(getResources().getColor(R.color.your_awesome_color));
}

Compatライブラリを使用:

if (Android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

values-v21/style.xmlフォルダー内のxmlでこれを行う方法は次のとおりです

<item name="Android:navigationBarColor">@color/your_color</item>
60
Bolling

ナビゲーションバーの色を変更する方法を次に示します。

XMLによる

1- values-v21/style.xml

<item name="Android:navigationBarColor">@color/navigationbar_color</item>

または、values /フォルダのみを使用して実行する場合は、-

2- values/style.xml

<resources xmlns:tools="http://schemas.Android.com/tools">

<item name="Android:navigationBarColor" tools:targetApi="21">@color/navigationbar_color</item>

ナビゲーションバーの色をプログラミングで変更することもできます

 if (Build.VERSION.SDK_INT >= 21)
    getWindow().setNavigationBarColor(getResources().getColor(R.color.navigationbar_color));

Compat Libraryを使用して-

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

詳細についてはリンクを見つけてください http://developer.Android.com/reference/Android/view/Window.html#setNavigationBarColor(int)

30
D_Alpha

values-v21/style.xmlフォルダーに次の行を追加できます。

<item name="Android:navigationBarColor">@color/theme_color</item>

テーマエディターを使用して、テーマを変更することもできます:

ツール-> Android->テーマエディター

そうすれば、追加のコンテンツを.xmlまたは.classファイルに入れる必要さえありません。

1
Lelouch

styles.xml file\app\src\main\res\values\styles.xmlで直接変更できます

これは古いバージョンで動作し、キットカットで変更してここに来ました。

0
  1. 黒色を作成:<color name="blackColorPrimary">#000001</color> (not #000000)
  2. スタイルで書く:<item name="Android:navigationBarColor" tools:targetApi="Lollipop">@color/blackColorPrimary</item>

問題は、Androidの上位バージョンが#000000を透過的にすることです

0
Fariz Agayev