2015-04-14 19 views
16

Tôi có một ứng dụng sử dụng theme thuộc tính (colorPrimaryDark) để tô màu trên thanh trạng thái trên Android v21 +:Thay đổi Status Bar màu khi vào ngữ cảnh Action Mode

enter image description here

này đang làm việc tốt. Bây giờ, khi người sử dụng dài nhấn một mục danh sách và đi vào chế độ hành động theo ngữ cảnh, tôi có thể tô màu cho thuộc tính thanh CAB sử dụng actionModeBackground để nó trông như thế này:

enter image description here

Vì vậy, thanh hành động có màu xám, đó là những gì tôi muốn, nhưng thanh trạng thái vẫn được tô màu bằng màu tối chủ đề màu tối. Tôi không muốn điều đó, tôi muốn thay đổi nó thành màu xám đen hoặc đen.

Làm thế nào tôi có thể làm điều này? Tôi không thấy bất kỳ thuộc tính chủ đề nào có thể hoạt động ở đây.

+0

Bạn đã thử [Window.setStatusBarColor()] (http://developer.android.com/reference/android/view/Window.html#setStatusBarColor%28int%29)? – AndroidEx

+0

Nó nên được xử lý thông qua theming như thế nào tất cả các màu khác ... Nếu không tôi phải lập trình đối phó với việc thay đổi màu sắc thanh trạng thái bản thân mình, và thay đổi nó trở lại, mà không có ý nghĩa nhiều với tôi. –

+0

Bạn có thực sự muốn thay đổi giá trị của thuộc tính 'colorPrimaryDark', thay vì màu thanh trạng thái trực tiếp không? – AndroidEx

Trả lời

30
private int statusBarColor; 

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      //hold current color of status bar 
      statusBarColor = getWindow().getStatusBarColor(); 
      //set your gray color 
      getWindow().setStatusBarColor(0xFF555555); 
     } 
     ... 
    } 

    ... 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      //return to "old" color of status bar 
      getWindow().setStatusBarColor(statusBarColor); 
     } 
     ... 
    } 
}); 
+4

Có cách nào để thực hiện thông qua xml (kiểu) không? Tôi đã tìm kiếm, nhưng không tìm thấy một giải pháp làm việc. – Mikhail

+0

Một vấn đề đối với tôi với giải pháp này là CAB và thanh trạng thái không thay đổi màu sắc cùng một lúc. Có cách nào để có được cả hai thay đổi màu sắc đồng thời? – nibarius

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