Я установил красный цвет, и после этого я хочу снова установить цвет по умолчанию, но я не знаю, какой цвет по умолчанию, кто-нибудь знает?
87
Вы можете сохранить старый цвет, а затем использовать его для восстановления исходного значения. Вот пример:
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
источник
Это может быть невозможно во всех ситуациях, но почему бы просто не использовать значение другого случайного TextView, которое существует в том же Activity и имеет цвет, который вы ищете?
txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());
источник
Цвета по умолчанию нет. Значит, у каждого устройства может быть свой.
источник
Я считаю, что целочисленное значение цвета по умолчанию - 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"
. Я полагаю, вам нужно переключаться между secondary_text_dark / light в зависимости от темы, которую вы используетеисточник
Вы можете использовать TextView.setTag / getTag для сохранения исходного цвета перед внесением изменений. Я бы предложил создать уникальный ресурс id в 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) }
источник