2013-06-12 38 views
38

Tôi đang sử dụngThay đổi actionbar màu lập trình nhiều hơn một lần

getSherlockActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00ACED)); 

Để thay đổi màu sắc của thanh hành động của tôi trong một đoạn và nó hoạt động. Nhưng nếu tôi mở đoạn này sau đó mở một đoạn khác gọi phương thức này bằng một màu khác thì thanh tác vụ sẽ không thay đổi thành màu mong muốn. Thay vào đó, nó chuyển thành màu trắng thay vì màu tôi đặt.

Trả lời

71

đây là một sửa chữa nhanh chóng mà tôi tìm thấy

mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED)); 
mActionBar.setDisplayShowTitleEnabled(false); 
mActionBar.setDisplayShowTitleEnabled(true); 
+0

Điều này chỉ xảy ra đối với tôi trên một thiết bị ... Motorola Xoom đã nổ tung. Tuy nhiên, điều này đã khắc phục được sự cố! Trong trường hợp của tôi, bật tắt hiển thị tiêu đề cần được đảo ngược vì tôi không hiển thị tiêu đề để bắt đầu. – Justin

+0

Tôi có thể xác nhận điều này cũng đã khắc phục sự cố trên LG-P880g. Bạn của tôi, thật tuyệt vời! Cảm ơn bạn! – JVillella

+0

Tôi phải sử dụng tài nguyên màu khi sử dụng thanh tác vụ hỗ trợ. getSupportActionBar(). setBackgroundDrawable (new ColorDrawable (getResources(). getColor (R.color.swift))); –

11

tôi đã cùng một vấn đề, answer from user1634451 làm việc nhưng chỉ một lần (sẽ không cho phép một số công tắc màu trong một hàng)

này chắc chắn cố định nó:

bar.setBackgroundDrawable(new ColorDrawable(getResources() 
        .getColor(R.color.app_bar_online))); 

Thay vì trực tiếp liên kết đến các màu sắc làm new ColorDrawable(R.color.app_bar_online)

+0

đây là những gì tôi đang tìm kiếm :) –

+0

Tôi đang sử dụng 'ContextCompat' thay vì' getResources', bởi vì tôi đang sử dụng thư viện hỗ trợ. Ngoài ra, 'getResources(). GetColor (int)' không được dùng nữa. –

5

getColor không được chấp nhận. sử dụng ContextCompat:

bar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, R.color.app_bar_online))); 
+0

Cảm ơn. Trong trường hợp nếu ai đó chọn màu từ mảng màu thì hãy sử dụng ** bodyColor [index] ** thay vì ** ContextCompat.getColor (context, R.color.app_bar_online) **. – CoDe

+0

Sử dụng giải pháp này, tôi nhận được một NullPointerException tại thời điểm này (ngay cả một cảnh báo từ AS). Tại sao? – MUmla

4

Nếu bạn muốn đặt màu của ActionBar và có màu là Chuỗi, điều này có vẻ phù hợp với tôi.

getSupportActionBar().setBackgroundDrawable(
      new ColorDrawable(Color.parseColor("#993b3c4e"))); 

Bạn có thể phải kích hoạt & vô hiệu hóa các tiêu đề để có được nó để làm mới/hiển thị đúng như trong câu trả lời được đưa ra bởi user1634451, nhưng tôi không cần phải trong trường hợp của tôi.

14

Hãy thử điều này,

Method1:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00FFED)); 

Method2:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources() 
        .getColor(R.color.bg_color))); 

Method3:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#3A1212"))); 
Các vấn đề liên quan