Я установил красный цвет, и после этого я хочу снова установить цвет по умолчанию, но я не знаю, какой цвет по умолчанию, кто-нибудь знает?
Ответы:
Вы можете сохранить старый цвет, а затем использовать его для восстановления исходного значения. Вот пример:
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"
. Я полагаю, вам нужно переключаться между 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)
}