Qual è il colore predefinito per il testo nella visualizzazione testo?


89

Ho impostato il colore sul rosso, dopodiché voglio reimpostare il colore di default, ma non so qual è il colore predefinito, qualcuno lo sa?

Risposte:


88

È possibile salvare il vecchio colore e quindi utilizzarlo per ripristinare il valore originale. Ecco un esempio:

ColorStateList oldColors =  textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors

Ma in generale il TextViewcolore del testo predefinito è determinato dal tema corrente applicato al tuo file Activity.


La soluzione più corretta. Conserva gli stati del colore del testo (disabilitato, ecc.)
Dasar

Dalla mia osservazione, il colore del testo definito dal tema non viene ereditato da TextView aggiunto dinamicamente dal codice. Appare sempre in bianco indipendentemente dal tema scuro / chiaro.
shiouming

2
@shiouming Dipende dal contesto utilizzato. Ogni costruttore utilizza un contesto e in quel contesto viene impostato un tema (di solito predefinito). Se necessario, utilizzare TextView (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Bonatti

110

In realtà il colore TextView è:

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

o

#808080

4
Questo è il colore del testo dell'indicatore di tabulazione predefinito. In molti casi potrebbe essere lo stesso del colore del testo predefinito, ma non ci farei affidamento.
k2col

6
Molto vicino, ma questo colore non è lo stesso.
LukaszTaraszka

2
@LukTar ha ragione, ho usato Photoshop e ho controllato il colore ... # 737373 è il colore del testo della visualizzazione del testo da un campione di pixel puntiformi (dimensione dell'area campione di un pixel) su una vista ingrandita al 1000% in Android Studio ... penso è necessario guardare lo stile predefinito dell'app per ottenere il valore effettivo per qualsiasi app particolare però ...
me_

41

Ci sono alcuni colori predefiniti definiti in android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);

4
Dovrebbe essere int c = ...invece diColor c = ...
Kevin Cruijssen

7
A partire dal livello API 23, getResources().getColor(int id)è ora deprecato (vedere il collegamento ). Puoi utilizzare getResources().getColor (int id, Resources.Theme theme)oContextCompat.getColor(contex, android.R.color.primary_text_dark)
InfectedPacket

primary_text_dark è ora deprecato ma non ho idea del perché :(
Impulse The Fox

15

Ottieni questi valori dagli attributi:

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();

Sembra che selezionerà correttamente il colore in base al tema e si aggiornerà, ad esempio, se l'app è in modalità notturna.
Brill Pappin

Per ottenere il TypedArray per il tema corrente, chiamalo senza il tema arg: TypedArray a = getTheme (). GetStyledAttributes (attrs);
petrsyn

Questo otterrà un colore appropriato solo se il tema utilizza effettivamente textColorSecondary. Poiché è possibile sovrascriverlo in un tema o stile, questo non è un modo molto preciso per determinare quale sarà effettivamente il colore del testo predefinito per una vista particolare. Si noti inoltre che le singole viste possono ora essere tematizzate, quindi il tema associato al contesto della vista dovrebbe essere usato invece di presumere che il tema dell'attività sia attivo per tutte le sue viste.
Lorne Laliberte

6

Ci sono impostazioni predefinite nel tema che Android utilizza se non specifichi un colore del testo. Può essere di colori diversi in varie interfacce utente Android (ad esempio HTC Sense, Samsung TouchWiz, ecc.). Android ha un tema _darke _light, quindi i valori predefiniti sono diversi per questi (ma quasi neri in entrambi in Android vaniglia). È comunque buona norma definire personalmente il colore del testo principale per fornire uno stile coerente in tutti i dispositivi.

In codice:

getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);

In xml:

android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"

Come riferimento in Android vanilla il colore del testo del tema scuro è #060001e nel tema chiaro è #060003dall'API v1. Vedi la classe di stile Android qui


I colori a cui si fa riferimento nell'ultimo collegamento in realtà non sono affatto colori, sono solo valori android.R utilizzati per cercare il colore. È possibile cercare i colori predefiniti trovando il colore in questa directory e cercando il riferimento del colore di base in questo file .xml .
Alex Gittemeier

5

So che è vecchio ma secondo il mio editor di temi con tema chiaro predefinito, predefinito

textPrimaryColor = #000000

e

textColorPrimaryDark = #757575

2

Ho usato un selettore di colori nella visualizzazione del testo e ho ottenuto questo # 757575


2

Potrebbe non essere possibile in tutte le situazioni, ma perché non utilizzare semplicemente il valore di un TextView casuale diverso che esiste nella stessa attività e che porta il colore che stai cercando?

txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());

0

Non esiste un colore predefinito. Significa che ogni dispositivo può avere il proprio.


7
Non ci sono colori predefiniti, solo che ogni distribuzione Android può sovrascriverli
Patrick Favre

@ for3st Sai di casi in cui lo cambiano?
sviluppatore Android

0

Credo che il valore intero del colore predefinito sia 16711935 (0x00FF00FF).


12
wow roba hardcoded, sai. Era questo il valore per tutte le versioni di Android su tutti i dispositivi e con tutti i temi selezionabili ?! Scherzando, sai ... :)
Bondax

1
Quindi il colore del testo predefinito in Android è il rosa? Penso che sia più in linea con # 060001 developer.android.com/reference/android/…
Patrick Favre,

0

hey puoi provare questo

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

0

Ho scoperto che android:textColor="@android:color/secondary_text_dark"fornisce un risultato più vicino al colore TextView predefinito rispetto a android:textColor="@android:color/tab_indicator_text". Suppongo che tu debba passare da secondary_text_dark / light a seconda del tema che stai utilizzando


0

È possibile utilizzare TextView.setTag / getTag per memorizzare il colore originale prima di apportare modifiche. Suggerirei di creare una risorsa id univoca in ids.xml per differenziare altri tag, se ne hai.

prima di impostare altri colori:

if (textView.getTag(R.id.txt_default_color) == null) {
    textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}

Cambiare indietro:

textView.getTag(R.id.txt_default_color) as? Int then {
    textView.setTextColor(this)
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.