Androidのロリポップでナビゲーションバーの色を変更


137

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

ここに画像の説明を入力してください

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>

あなたはstyle.xmlファイルを投稿できますか?すべてではありません。関連するスニペット
Blackbelt 2015年

デフォルトの色に戻すにはどうすればよいですか?
GMX

回答:


262

これは、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に設定し、ナビゲーションバーの下に色付きのビューを配置することです。


ありがとうございました。スタイルコード<item name = "android:navigationBarColor"> @ color / MyColor </ item>に追加して、機能するようになりました。
user3065901

31
アイコンの色を変える方法はありますか?
Jamsheed Kamarudeen、2015

10
<item name="android:navigationBarColor">@color/theme_color</item>values-21フォルダに追加
Pratik Butani

また、(ターゲットAndroidバージョン)が少なくともAPI 21に
MujtabaFR

2
これをスタイルファイルに<item name="android:windowDrawsSystemBarBackgrounds">false</item>含めないでください。そうしないと、システムバーの色付けが機能しません。
Alexey Ozerov 2016年

70

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

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>

1
これは奇妙なオプションです!私はnavbarを黒のボタンで黒くして、ホーム/戻る/最近のソフトボタンが見えないアプリを持っています...
JohnyTex

37

ナビゲーションバーの色を変更する方法をいくつか紹介します。

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


使えなかったtools:targetApi?この機能は古くなっていますか?
winklerrr

1
@winklerrr古くはありません。私の最新の回答を参照してください。
D_Alpha 2017

プログラムで色を変更する場合は、それぞれActivity/で変更する必要がありFragmentますか?それともやるべき場所はありますか?たぶん拡張するクラスにいるのApplicationでしょうか?
winklerrr 2017

1
各アクティビティでこれを行う必要があります。そうしないと、アクティビティごとに異なるスタイルを作成できます。
D_Alpha 2017

styles.xml使用中にオーバーライドする必要はありませんtools:targetApi
Farshad Tahmasbi 2017年


1

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

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

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


いいヒント!私にとっては、それはツール->テーマエディターの下にありました。
サム

テーマエディターは3.3から廃止されました。
Jenix

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

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


0

styles.xmlファイル\ app \ src \ main \ res \ values \ styles.xml で直接変更できます。

これは古いバージョンで動作しますが、KitKatで変更してここに来ました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.