Tôi đặt màu thành màu đỏ, và sau đó tôi muốn đặt lại màu về mặc định, nhưng tôi không biết màu mặc định là gì, có ai biết không?
Câu trả lời:
Bạn có thể lưu màu cũ và sau đó sử dụng nó để khôi phục lại giá trị ban đầu. Đây là một ví dụ:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Nhưng nói chung TextView
màu văn bản mặc định được xác định từ Chủ đề hiện tại được áp dụng cho của bạn Activity
.
Trên thực tế, TextView màu là:
android:textColor="@android:color/tab_indicator_text"
hoặc là
#808080
Có một số màu mặc định được xác định trong android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
thay vìColor c = ...
getResources().getColor(int id)
hiện không được dùng nữa (xem liên kết ). Bạn có thể có thể sử dụng getResources().getColor (int id, Resources.Theme theme)
hoặcContextCompat.getColor(contex, android.R.color.primary_text_dark)
Nhận các giá trị này từ các thuộc tính:
int[] attrs = new int[] { android.R.attr.textColorSecondary };
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, attrs);
DEFAULT_TEXT_COLOR = a.getColor(0, Color.RED);
a.recycle();
Có các giá trị mặc định trong chủ đề mà Android sử dụng nếu bạn không chỉ định màu văn bản. Nó có thể có các màu khác nhau trong các giao diện người dùng Android khác nhau (ví dụ: HTC Sense, Samsung TouchWiz, v.v.). Android có chủ đề _dark
và _light
chủ đề, do đó, các mặc định khác nhau cho những thứ này (nhưng gần như màu đen ở cả hai trong Android vani). Tuy nhiên, thực tiễn tốt là bạn nên tự xác định màu văn bản chính của mình để cung cấp phong cách nhất quán trên toàn bộ thiết bị.
Trong mã:
getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);
Trong xml:
android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"
Như tham chiếu trong Android vani, màu văn bản chủ đề tối là màu #060001
và trong chủ đề sáng màu là #060003
từ API v1. Xem lớp phong cách android tại đây
Tôi biết nó đã cũ nhưng theo trình chỉnh sửa chủ đề của riêng tôi với chủ đề ánh sáng mặc định, mặc định
textPrimaryColor = #000000
và
textColorPrimaryDark = #757575
Tôi đã sử dụng một công cụ chọn màu trên chế độ xem văn bản và nhận được màu # 757575
Không có màu mặc định. Nó có nghĩa là mọi thiết bị đều có thể có riêng.
Tôi tin rằng giá trị số nguyên màu mặc định là 16711935 (0x00FF00FF).
này bạn có thể thử cái này
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Tôi nhận thấy điều đó android:textColor="@android:color/secondary_text_dark"
cung cấp kết quả gần với màu TextView mặc định hơn android:textColor="@android:color/tab_indicator_text"
. Tôi cho rằng bạn phải chuyển đổi giữa Secondary_text_dark / light tùy thuộc vào Chủ đề bạn đang sử dụng
Bạn có thể sử dụng TextView.setTag / getTag để lưu trữ màu gốc trước khi thực hiện thay đổi. Tôi khuyên bạn nên tạo một tài nguyên id duy nhất trong ids.xml để phân biệt các thẻ khác nếu bạn có.
trước khi đặt sang các màu khác:
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
Thay đổi lại:
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}