Android kẹo mút thay đổi màu thanh điều hướng


137

Trong ứng dụng của mình, tôi cần thay đổi màu thanh điều hướng phía 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.

nhập mô tả hình ảnh ở đây

v21 / style.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>

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

Làm cách nào để đặt lại màu mặc định?
GMX

Câu trả lời:


262

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

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

hoặc là

window.setNavigationBarColor(@ColorInt int color)

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

Lưu ý rằng phương pháp đã đượ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 thức thứ hai (hoạt động trên KitKat) là đặt windowTranslucentNavulation thành true trong tệp kê khai và đặt chế độ xem màu bên dưới thanh điều hướng.


Cảm ơn bạn. Tôi đã thêm vào mã kiểu của mình <item name = "android: navigationBarColor"> @ color / MyColor </ item> và bây giờ hoạt động.
dùng3065901

31
Có cách nào để thay đổi màu sắc của các biểu tượng không?
Jamsheed Kamarudeen 23/2/2015

10
<item name="android:navigationBarColor">@color/theme_color</item>thêm vào values-21thư mục
Pratik Butani

Ngoài ra, hãy đảm bảo rằng (Phiên bản Android đích) được đặt thành ít nhất API 21
MujtabaFR

2
Đừng đặt cái này trong tập tin kiểu của bạn <item name="android:windowDrawsSystemBarBackgrounds">false</item>Nếu không thì tô màu hệ thống sẽ không hoạt động.
Alexey Ozerov

70

Đây là cách thực hiện theo chương trình:

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à cách thực hiện với xml trong thư mục value-v21 / style.xml:

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

1
Đây là một lựa chọn kỳ lạ! Tôi có một ứng dụng làm cho thanh điều hướng màu đen với các nút màu đen khiến không thể thấy các nút mềm / trở lại / gần đây ...
JohnyTex

37

Dưới đây là một số cách để thay đổi màu sắc Thanh điều hướng.

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ỉ bằng cách sử dụng các giá trị / thư mục thì-

2- giá trị / 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 Lập trình .

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

Bằng cách sử dụng Thư viện Compat-

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

vui lòng tìm liên kết để biết thêm chi tiết- http://developer.android.com/reference/android/view/Window.html#setNavlationBarColor(int)


Tôi không thể sử dụng tools:targetApi? Là chức năng này đã lỗi thời?
winklerrr

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

Nếu tôi quyết định thay đổi màu lập trình - tôi có cần phải làm điều này trong mỗi Activity/ Fragmentkhông? Hoặc có một nơi nào đó mà tôi nên làm điều đó? Có lẽ trong lớp mà kéo dài Application?
winklerrr

1
Bạn cần làm điều này trong mỗi Hoạt động hoặc bạn có thể tạo phong cách khác nhau cho hoạt động khác nhau.
D_Alpha

Không cần ghi đè styles.xmltrong khi sử dụngtools:targetApi
Farshad Tahmasbi

8

Bạn có thể thêm dòng sau vào thư mục value-v21 / style.xml :

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

1

Bạn cũng có thể sửa đổi chủ đề của mình bằng Trình chỉnh sửa chủ đề bằng cách nhấp vào:

Công cụ -> Android -> Trình chỉnh sửa chủ đề

Sau đó, bạn thậm chí không cần phải đưa một số nội dung bổ sung vào các tệp .xml hoặc. Class của mình.


Mẹo hay! Đối với tôi, nó chỉ nằm dưới Công cụ -> Trình chỉnh sửa chủ đề.
Sam

Bây giờ Theme Editor đã bắt đầu với 3.3.
Jenix

1
  1. Tạo màu đen: <color name="blackColorPrimary">#000001</color> (not #000000)
  2. Viết theo phong cách: <item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>

Vấn đề là phiên bản Android cao hơn tạo ra trasparent cho # 000000


0

Bạn có thể thay đổi nó trực tiếp trong styles.xml tập tin \ ứng dụng \ src \ chính \ res \ giá trị \ styles.xml

Công việc này trên các phiên bản cũ hơn, tôi đã thay đổi nó trong KitKat và đến đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.