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?
87
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
fonte
Existem algumas cores padrão definidas em
android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
fonte
int c = ...
vez deColor c = ...
getResources().getColor(int id)
está obsoleto (consulte o link ). Você pode usargetResources().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();
fonte
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 aquifonte
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
fonte
Usei um seletor de cores na visualização de texto e obtive este # 757575
fonte
Pode não ser possível em todas as situações, mas por que não simplesmente usar o valor de um TextView aleatório diferente que existe na mesma Activity e que carrega a cor que você está procurando?
txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());
fonte
Não há cor padrão. Isso significa que cada dispositivo pode ter seu próprio.
fonte
Acredito que o valor inteiro da cor padrão é 16711935 (0x00FF00FF).
fonte
ColorStateList colorStateList = textView.getTextColors(); String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
fonte
Descobri que
android:textColor="@android:color/secondary_text_dark"
fornece um resultado mais próximo da cor padrão de TextView do queandroid:textColor="@android:color/tab_indicator_text"
. Suponho que você tenha que alternar entre secondary_text_dark / light dependendo do tema que está usandofonte
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) }
fonte