W mojej aplikacji muszę zmienić kolor dolnego paska nawigacyjnego. Obejrzałem wiele postów, ale nie mogę znaleźć rozwiązania. Używam biblioteki 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>
android
colors
android-5.0-lollipop
navigationbar
user3065901
źródło
źródło
Odpowiedzi:
Można to zrobić wewnątrz styles.xml za pomocą
<item name="android:navigationBarColor">@color/theme_color</item>
lub
window.setNavigationBarColor(@ColorInt int color)
http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)
Zwróć uwagę, że metoda została wprowadzona w systemie Android Lollipop i nie będzie działać na interfejsie API w wersji <21.
Druga metoda (działa na KitKat) polega na ustawieniu parametru windowTranslucentNavigation na wartość true w manifeście i umieszczeniu kolorowego widoku pod paskiem nawigacji.
źródło
<item name="android:navigationBarColor">@color/theme_color</item>
dodaj wvalues-21
folderze<item name="android:windowDrawsSystemBarBackgrounds">false</item>
W przeciwnym razie kolorowanie paska systemowego nie będzie działać.Oto jak to zrobić programowo:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setNavigationBarColor(getResources().getColor(R.color.your_awesome_color)); }
Korzystanie z biblioteki Compat:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary)); }
Oto jak to zrobić z XML w folderze values-v21 / style.xml:
<item name="android:navigationBarColor">@color/your_color</item>
źródło
Oto kilka sposobów zmiany koloru paska nawigacji.
Według XML
1- wartości-v21 / style.xml
<item name="android:navigationBarColor">@color/navigationbar_color</item>
Lub jeśli chcesz to zrobić tylko przy użyciu wartości / folderu, a następnie-
2- wartości / style.xml
<resources xmlns:tools="http://schemas.android.com/tools"> <item name="android:navigationBarColor" tools:targetApi="21">@color/navigationbar_color</item>
Możesz także zmienić kolor paska nawigacji poprzez programowanie .
if (Build.VERSION.SDK_INT >= 21) getWindow().setNavigationBarColor(getResources().getColor(R.color.navigationbar_color));
Korzystając z biblioteki Compat
if (Build.VERSION.SDK_INT >= 21) { getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary)); }
znajdź link, aby uzyskać więcej informacji - http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)
źródło
tools:targetApi
? Czy ta funkcja jest nieaktualna?Activity
/Fragment
? Czy jest jakieś miejsce, w którym powinienem to zrobić? Może w klasie, która się rozszerzaApplication
?styles.xml
podczas używaniatools:targetApi
W folderze values-v21 / style.xml można dodać następujący wiersz :
<item name="android:navigationBarColor">@color/theme_color</item>
źródło
<color name="blackColorPrimary">#000001</color> (not #000000)
<item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>
Problem polega na tym, że wyższa wersja Androida czyni trasparent dla # 000000
źródło
Możesz także zmodyfikować motyw za pomocą Edytora motywów, klikając:
Narzędzia -> Android -> Edytor motywów
Wtedy nie musisz nawet umieszczać dodatkowej zawartości w plikach .xml lub .class.
źródło
Możesz to zmienić bezpośrednio w pliku styles.xml \ app \ src \ main \ res \ values \ styles.xml
Ta praca na starszych wersjach, zmieniałem ją w KitKat i przyszedłem tutaj.
źródło