Android lolipop gezinme çubuğu rengini değiştir


137

Uygulamamda alt gezinme çubuğunun rengini değiştirmem gerekiyor. Birçok gönderi izledim ama çözümü bulamıyorum. AppCompat kitaplığını kullanıyorum.

görüntü açıklamasını buraya girin

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 dosyasını gönderebilir misin? Her şey değil. Sadece ilgili snippet'ler
Blackbelt

Varsayılan rengi nasıl geri alabilirim?
GMX

Yanıtlar:


262

Styles.xml içinde kullanılarak yapılabilir

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

veya

window.setNavigationBarColor(@ColorInt int color)

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

Yöntemin Android Lollipop'ta tanıtıldığını ve <21 API sürümünde çalışmayacağını unutmayın.

İkinci yöntem (KitKat'ta çalışır), manifest'te windowTranslucentNavigation öğesini true olarak ayarlamak ve gezinme çubuğunun altına renkli bir görünüm yerleştirmektir.


Teşekkür ederim. <İtem name = "android: navigationBarColor"> @ color / MyColor </item> stil koduma ekledim ve şimdi çalışıyor.
user3065901

31
Simgelerin rengini de değiştirmenin bir yolu var mı?
Jamsheed Kamarudeen

10
<item name="android:navigationBarColor">@color/theme_color</item>values-21klasör ekle
Pratik Butani

Ayrıca (Hedef Android Sürümü) '
nün

2
Bunu stil dosyanıza koymayın <item name="android:windowDrawsSystemBarBackgrounds">false</item>Aksi takdirde sistem çubuğu renklendirme çalışmayacaktır.
Alexey Ozerov

70

Programatik olarak nasıl yapılacağı aşağıda açıklanmıştır:

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

Uyumluluk kitaplığını kullanma:

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

Değerler-v21 / style.xml klasöründe xml ile bunu şu şekilde yapabilirsiniz:

<item name="android:navigationBarColor">@color/your_color</item>

1
Bu garip bir seçenek! Gezinme
çubuğunu

37

Gezinme Çubuğu rengini değiştirmenin bazı yolları aşağıda verilmiştir.

XML ile

1- değerler-v21 / style.xml

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

Ya da sadece değerleri / klasörleri kullanarak yapmak istiyorsanız, o zaman-

2- değerler / style.xml

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

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

Programlama ile gezinme çubuğu rengini de değiştirebilirsiniz .

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

Uyumluluk Kitaplığını Kullanarak-

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

daha fazla ayrıntı için lütfen bağlantıyı bulun - http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)


Ben kullanmak mümkün değildi tools:targetApi? Bu işlevin süresi geçmiş mi?
winklerrr

1
@winklerrr Güncel değil, güncellenmiş cevabıma bakın.
D_Alpha

Rengi programlı olarak değiştirmeye karar verirsem - bunu her birinde Activity/ / de yapmam gerekir Fragmentmi? Yoksa bunu yapmam gereken belirli bir yer var mı? Belki genişleyen sınıfta Application?
winklerrr

1
Bunu her Aktivitede yapmanız gerekir veya farklı aktivite için farklı stil oluşturabilirsiniz.
D_Alpha

styles.xmlKullanırken geçersiz kılmaya gerek yoktools:targetApi
Farshad Tahmasbi

8

Values-v21 / style.xml klasörüne aşağıdaki satırı ekleyebilirsiniz :

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

2
  1. Siyah Renk Oluştur: <color name="blackColorPrimary">#000001</color> (not #000000)
  2. Tarzda Yazın: <item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>

Sorun, Android'in daha yüksek sürümünün # 000000 için şeffaf olması


Her şeyi doğru yapıyorsanız ve HALA çalışmıyorsa, bu benim için işe yarayan şeydi. # 000000'in çalışmayacağı başka hiçbir yerde belirtilmiyor gibi görünüyor.
Matija Martic

1

Temanızı tema Düzenleyicisini kullanarak da değiştirebilirsiniz:

Araçlar -> Android -> Tema Düzenleyici

Ardından, .xml veya .class dosyalarınıza fazladan içerik koymanıza bile gerek kalmaz.


Güzel ipucu! Benim için sadece Araçlar -> Tema Düzenleyicisi altındaydı.
Sam

Şimdi Tema Düzenleyici 3.3'ten başlayarak gitti.
Jenix

0

Bunu doğrudan styles.xml dosyasında \ app \ src \ main \ res \ values ​​\ styles.xml dosyasında değiştirebilirsiniz.

Bu eski sürümlerde çalışıyor, KitKat'ta değiştiriyordum ve buraya geldim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.