Qual é a cor padrão para o texto em visualização de texto?

87

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?

Lukap
fonte

Respostas:

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 TextViewcor do texto padrão é determinada a partir do tema atual aplicado ao seu Activity.

inazaruk
fonte
Solução mais correta. Preservar os estados da cor do texto (desativado etc.)
dasar
De minha observação, a cor do texto definida pelo tema não é herdada por TextView adicionado dinamicamente do código. Ele sempre aparece em branco, independentemente do tema escuro / claro.
shiouming de
1
@shiouming Depende do contexto usado. Cada Construtor usa um Contexto e, nesse Contexto, um Tema é definido (geralmente padrão). Se necessário, use TextView (contexto de contexto, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Bonatti
109

Na verdade, a cor TextView é:

android:textColor="@android:color/tab_indicator_text"

ou

#808080
Alex Zaraos
fonte
4
Essa é a cor de texto do indicador de guia padrão. Em muitos casos, pode ser igual à cor de texto padrão, mas eu não confiaria nela.
k2col de
6
Muito perto, mas essa cor não é a mesma.
LukaszTaraszka de
2
@LukTar está certo, usei o photoshop e verifiquei a cor ... # 737373 é a cor do texto da visualização de texto de uma amostra de pixel de ponto (tamanho da área de amostra de um pixel) em uma visualização com zoom de 1000% no Android Studio ... eu acho você precisa olhar para o estilo padrão do aplicativo para obter o valor real para qualquer aplicativo em particular ...
me_
40

Existem algumas cores padrão definidas em android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);
davenpcj
fonte
4
Deve ser em int c = ...vez deColor c = ...
Kevin Cruijssen
7
A partir do nível 23 da API, 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)
InfectedPacket
primary_text_dark agora está obsoleto, mas não tenho ideia do motivo :(
Impulse The Fox
15

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();
Bondax
fonte
Parece que ele selecionará corretamente a cor com base no tema e será atualizado, por exemplo, se o aplicativo estiver no modo noturno.
Brill Pappin
Para obter o TypedArray para o Tema atual, chame-o sem o argumento do Tema: TypedArray a = getTheme (). GetStyledAttributes (attrs);
petrsyn,
Isso só obterá uma cor apropriada se o tema estiver realmente usando textColorSecondary. Visto que é possível sobrescrever isso em um tema ou estilo, esta não é uma maneira muito precisa de determinar qual será a cor de texto padrão para uma determinada visualização. Observe também que as visualizações individuais agora podem ser temáticas, portanto, o tema associado ao contexto da visualização deve ser usado em vez de assumir que o tema da atividade está em vigor para todas as suas visualizações.
Lorne Laliberte,
6

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 _darke _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 é #060001e no tema claro é #060003desde a API v1. Veja a aula de estilo android aqui

Patrick Favre
fonte
As cores referenciadas em seu último link, na verdade, não são cores, são apenas valores android.R usados ​​para pesquisar a cor. Você pode pesquisar as cores padrão encontrando a cor neste diretório e procurando a referência de cor de base neste arquivo .xml .
Alex Gittemeier
5

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
Ahmad Reza Enshaee
fonte
2

Usei um seletor de cores na visualização de texto e obtive este # 757575

dave o grady
fonte
2

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());
Mandril
fonte
0

Não há cor padrão. Isso significa que cada dispositivo pode ter seu próprio.

piotrpo
fonte
7
Não, existem cores padrão, apenas que cada distribuição do Android pode sobrescrevê-las
Patrick Favre
@ for3st Você conhece casos em que eles mudam?
desenvolvedor Android de
0

Acredito que o valor inteiro da cor padrão é 16711935 (0x00FF00FF).

C Nick
fonte
12
uau, coisas codificadas, você sabe. Esse era o valor para todas as versões do Android em todos os dispositivos e com todos os temas selecionáveis ​​?! Brincando, você sabe ... :)
Bondax
1
Portanto, a cor do texto padrão no Android é rosa? Acho que está mais alinhado com # 060001 developer.android.com/reference/android/…
Patrick Favre
0

ei você pode tentar isso

ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));
Vivek Pratap Singh
fonte
0

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

quealegriamasalegre
fonte
0

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)
}
Arst
fonte