Ho un'app Android su cui, quando l'utente tocca a TextView
, vorrei applicare uno stile definito.
Ho pensato di trovarne uno textview.setStyle()
ma non esiste. Provai
textview.setTextAppearance();
ma non funziona.
Ho un'app Android su cui, quando l'utente tocca a TextView
, vorrei applicare uno stile definito.
Ho pensato di trovarne uno textview.setStyle()
ma non esiste. Provai
textview.setTextAppearance();
ma non funziona.
Risposte:
L'ho fatto creando un nuovo file XML res/values/style.xml
come segue:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="boldText">
<item name="android:textStyle">bold|italic</item>
<item name="android:textColor">#FFFFFF</item>
</style>
<style name="normalText">
<item name="android:textStyle">normal</item>
<item name="android:textColor">#C0C0C0</item>
</style>
</resources>
Ho anche una voce nel mio file "strings.xml" come questa:
<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>
Quindi, nel mio codice ho creato un ClickListener per intercettare l'evento tap su quel TextView: EDIT: As from API 23 'setTextAppearance' is deprecated
myTextView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
//highlight the TextView
//myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.boldText);
} else {
myTextView.setTextAppearance(R.style.boldText);
}
myTextView.setBackgroundResource(R.color.highlightedTextViewColor);
}
});
Per cambiarlo di nuovo, dovresti usare questo:
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
Come suggerito da Jonathan, usando textView.setTextTypeface
Works, l'ho usato in un'app solo pochi secondi fa.
textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);
Lo hai impostato dal codice. Carattere tipografico
A livello di codice: tempo di esecuzione
Puoi farlo in modo programmatico usando setTypeface ():
textView.setTypeface(null, Typeface.NORMAL); // for Normal Text
textView.setTypeface(null, Typeface.BOLD); // for Bold only
textView.setTypeface(null, Typeface.ITALIC); // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic
XML: Design Time
Puoi impostare anche in XML:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Spero che questo ti aiuti
Summved
ho scoperto textView.setTypeface(Typeface.DEFAULT_BOLD);
che è il metodo più semplice.
prova questa riga di codice.
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
qui, otterrà il carattere tipografico corrente da questa visualizzazione di testo e lo sostituirà usando il nuovo carattere tipografico. Il nuovo carattere tipografico qui è DEFAULT_BOLD
ma puoi applicarne molti altri.
Vedi doco per setText () in TextView http://developer.android.com/reference/android/widget/TextView.html
Per applicare uno stile alle stringhe, collega gli oggetti android.text.style. * A una SpannableString oppure consulta la documentazione sui tipi di risorse disponibili per un esempio di impostazione del testo formattato nel file di risorse XML.