2015-01-08 33 views
65

Trong ứng dụng của tôi, tôi cần phải thay đổi màu thanh điều hướng bên dưới. Tôi đã xem nhiều bài nhưng không thể tìm thấy với giải pháp. Tôi đang sử dụng thư viện appCompat. Cần trợ giúp. Cảm ơn trước.Thanh điều hướng thay đổi màu kẹo của Android

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> 
+0

bạn có thể đăng tệp style.xml không? Không phải toàn bộ. Chỉ các đoạn trích liên quan – Blackbelt

Trả lời

107

Nó có thể được thực hiện bên trong styles.xml sử dụng

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

hoặc

window.setNavigationBarColor(@ColorInt int color) 

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

Lưu ý rằng phương pháp này đã được giới thiệu trong Android Lollipop và sẽ không hoạt động trên phiên bản API < 21.

Phương pháp thứ hai (hoạt động trên KitKat) là để thiết lập windowTranslucentNavigation true trong biểu hiện và địa điểm một chế độ xem màu bên dưới thanh điều hướng.

+0

Cảm ơn bạn. Tôi đã thêm vào mã kiểu của tôi @ color/MyColor và hiện đang hoạt động. – user3065901

+5

Có cách nào để thay đổi màu sắc của các biểu tượng không? –

+7

' @ color/theme_color' thêm vào 'giá trị-21' thư mục –

51

Dưới đây là làm thế nào để làm điều đó programatically:

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

Sử dụng thư viện compat:

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

Dưới đây là làm thế nào để làm điều đó với xml trong các giá trị-v21/phong cách .xml thư mục:

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

Bạn có thể thêm dòng sau trong giá trị-v21/style.xml thư mục:

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

Dưới đây là một số cách để thay đổi màu sắc Navigation Bar.

Bằng XML

1- giá trị-v21/style.xml

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

Hoặc nếu bạn muốn làm điều đó chỉ sử dụng các giá trị/thư mục sau đó-

2- values ​​/ style.xml

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

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

Bạn cũng có thể thay đổi màu thanh điều hướng Bằng cách lập trình.

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

Bởi Sử dụng compat Library-

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

hãy tìm liên kết để biết thêm details- http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)

+0

Tôi không thể sử dụng 'công cụ: targetApi'? Chức năng này có lỗi thời không? – winklerrr

+1

@winklerrr Nó không lỗi thời, hãy xem câu trả lời cập nhật của tôi. –

+0

Nếu tôi quyết định thay đổi màu theo chương trình - tôi có cần thực hiện điều này trong mỗi 'Hoạt động' /' Phân đoạn' không? Hoặc là có một nơi nào đó mà tôi nên làm điều đó? Có lẽ trong lớp mở rộng 'Application'? – winklerrr

0

Bạn có thể thay đổi nó trực tiếp trong styles.xml tập tin \ ứng dụng \ src \ main \ res \ values ​​\ styles.xml

Tác phẩm này trên các phiên bản cũ hơn, tôi khi thay đổi nó ở KitKat và đến đây.

0

Bạn cũng có thể thay đổi chủ đề của bạn sử dụng theme Editor bằng cách nhấn:

Tools -> Android -> Theme Editor

Sau đó, bạn thậm chí không cần phải đặt một số nội dung bổ sung trong .xml hoặc tệp .class.

Các vấn đề liên quan