Я встановлюю колір на червоний, а після цього хочу знову встановити колір за замовчуванням, але я не знаю, що це за колір за замовчуванням, хтось знає?
Відповіді:
Ви можете зберегти старий колір, а потім використовувати його для відновлення початкового значення. Ось приклад:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Але загалом TextView
колір тексту за замовчуванням визначається з поточної теми, застосованої до вашого Activity
.
Насправді колір TextView такий:
android:textColor="@android:color/tab_indicator_text"
або
#808080
Є деякі кольори за замовчуванням, визначені в android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
замістьColor c = ...
getResources().getColor(int id)
він тепер застарілий (див. Посилання ). Ви можете або використовувати, getResources().getColor (int id, Resources.Theme theme)
абоContextCompat.getColor(contex, android.R.color.primary_text_dark)
Отримати ці значення з атрибутів:
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();
У темі за замовчуванням використовується Android, якщо ви не вказали колір тексту. Це можуть бути різні кольори в різних інтерфейсах користувача Android (наприклад, HTC Sense, Samsung TouchWiz тощо). Android має _dark
і_light
тему , тому за замовчуванням для них різні (але майже чорні в обох у ванільному андроїді). Однак є гарною практикою самостійно визначати свій основний колір тексту, щоб забезпечити послідовний стиль на всіх пристроях.
У коді:
getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);
У xml:
android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"
Як посилання у ванільному Android, колір тексту темної теми є, #060001
а світлий -#060003
з API v1. Дивіться клас Android-стилю тут
Я знаю, що він старий, але відповідно до мого власного редактора тем із легкою темою за замовчуванням, за замовчуванням
textPrimaryColor = #000000
і
textColorPrimaryDark = #757575
Я використав підбірку кольорів у текстовому режимі і отримав це # 757575
Колір за замовчуванням відсутній. Це означає, що кожен пристрій може мати свій власний.
Я вважаю, що значення цілого кольору за замовчуванням - 16711935 (0x00FF00FF).
Гей, ви можете спробувати це
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Я виявив, що android:textColor="@android:color/secondary_text_dark"
забезпечує ближчий результат до кольору TextView за замовчуванням, ніж android:textColor="@android:color/tab_indicator_text"
. Припускаю, вам доведеться перемикатися між вторинним_текстом_темні / світлом залежно від теми, яку ви використовуєте
Ви можете використовувати TextView.setTag / getTag для збереження вихідного кольору перед внесенням змін. Я б запропонував створити унікальний ресурс ідентифікатора в ids.xml, щоб диференціювати інші теги, якщо у вас є.
перед налаштуванням інших кольорів:
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
Зміна назад:
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}