Eu defino a cor para vermelho, e depois quero definir a cor novamente para o padrão, mas não sei qual é a cor padrão, alguém sabe?
Respostas:
Você pode salvar a cor antiga e usá-la para restaurar o valor original. Aqui está um exemplo:
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
Mas, em geral, a TextView
cor do texto padrão é determinada a partir do tema atual aplicado ao seu Activity
.
Na verdade, a cor TextView é:
android:textColor="@android:color/tab_indicator_text"
ou
#808080
Existem algumas cores padrão definidas em android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
vez deColor c = ...
getResources().getColor(int id)
está obsoleto (consulte o link ). Você pode usar getResources().getColor (int id, Resources.Theme theme)
ouContextCompat.getColor(contex, android.R.color.primary_text_dark)
Obtenha esses valores de atributos:
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();
Existem padrões no tema que o Android usa se você não especificar uma cor de texto. Podem ter cores diferentes em várias IUs do Android (por exemplo, HTC Sense, Samsung TouchWiz, etc). O Android tem um tema _dark
e _light
, portanto, os padrões são diferentes para eles (mas quase preto em ambos no vanilla android). No entanto, é uma boa prática definir você mesmo a cor primária do texto para fornecer um estilo consistente em todos os dispositivos.
Em código:
getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);
Em xml:
android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"
Como referência no Android baunilha, a cor do texto do tema escuro é #060001
e no tema claro é #060003
desde a API v1. Veja a aula de estilo android aqui
Eu sei que é antigo, mas de acordo com meu próprio editor de tema com tema claro padrão, padrão
textPrimaryColor = #000000
e
textColorPrimaryDark = #757575
Usei um seletor de cores na visualização de texto e obtive este # 757575
Não há cor padrão. Isso significa que cada dispositivo pode ter seu próprio.
Acredito que o valor inteiro da cor padrão é 16711935 (0x00FF00FF).
ei você pode tentar isso
ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Descobri que android:textColor="@android:color/secondary_text_dark"
fornece um resultado mais próximo da cor padrão de TextView do que android:textColor="@android:color/tab_indicator_text"
. Suponho que você tenha que alternar entre secondary_text_dark / light dependendo do tema que está usando
Você pode usar TextView.setTag / getTag para armazenar a cor original antes de fazer alterações. Eu sugeriria criar um recurso de id exclusivo em ids.xml para diferenciar outras tags, se você tiver.
antes de definir para outras cores:
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
Mudando de volta:
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}