22

Tôi muốn thay đổi màu chữ hành động cho thanh snack của tôi, nhưng nó không hoạt động vì một số lý do.Màu văn bản hành động của thanh Snack không thay đổi

tôi sử dụng đoạn mã sau để hiển thị một snackbar:

Snackbar.make(findViewById(R.id.root), "text", Snackbar.LENGTH_LONG).setActionTextColor(R.color.yellow).setAction("OK", new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
    } 
}).show(); 

Trả lời

42

Đối số của setActionTextColorint đại diện cho màu sắc, chứ không phải ID tài nguyên.

Thay vì điều này:

.setActionTextColor(R.color.yellow) 

thử:

.setActionTextColor(Color.YELLOW) 

Nếu bạn muốn sử dụng nguồn lực nào, hãy thử:

.setActionTextColor(ContextCompat.getColor(context, R.color.color_name)); 

Lưu ý: Để sử dụng ContextCompat, tôi giả sử bạn đã bao gồm thư viện Hỗ trợ vào tệp build.gradle của bạn (Tùy chọn bạn đã có libra appcompat (v7) ry quá).

+2

snackbar.setActionTextColor (getResources() getColor (R.color.colorPrimary).); Đã làm cho tôi....! – Prasad

+0

Điều này chỉ hoạt động nếu "định nghĩa" của OP màu vàng giống như hệ thống. – tir38

+0

Giới thiệu về getColor không được chấp nhận, không sử dụng @SuppressWarning nhưng thay vào đó ContextCompat.getColor (ngữ cảnh, R.color.youColor) –

24

Sử dụng

.setActionTextColor(getResources().getColor(R.color.red)) 

thay vì chỉ

.setActionTextColor(R.color.red) 
+15

'getColor (int)' không được dùng nữa 'ContextCompat.getColor (context, R.color.red) 'thay vào đó. – Hafez

2

Không ai trong số những câu trả lời ở trên đã giúp tôi. tôi tìm thấy giải pháp này, và nó hoạt động bằng cách thay đổi bằng tay màu chữ của TextView

Snackbar snack = Snackbar.make(v, "Snackbar message", Snackbar.LENGTH_LONG); 
View view = snack.getView(); 
TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text); 
tv.setTextColor(Color.WHITE); 
snack.show(); 
Các vấn đề liên quan