Tengo una aplicación de Android en la que, cuando el usuario toca un TextView
, me gustaría aplicar un estilo definido.
Pensé en encontrar un textview.setStyle()
pero no existe. Lo intenté
textview.setTextAppearance();
Pero no funciona.
Tengo una aplicación de Android en la que, cuando el usuario toca un TextView
, me gustaría aplicar un estilo definido.
Pensé en encontrar un textview.setStyle()
pero no existe. Lo intenté
textview.setTextAppearance();
Pero no funciona.
Respuestas:
Hice esto creando un nuevo archivo XML de la res/values/style.xml
siguiente manera:
<?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>
También tengo entradas en mi archivo "strings.xml" como este:
<color name="highlightedTextViewColor">#000088</color>
<color name="normalTextViewColor">#000044</color>
Luego, en mi código creé un ClickListener para atrapar el evento tap en ese TextView: EDITAR: A partir de API 23, 'setTextAppearance' está en desuso
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);
}
});
Para volver a cambiarlo, usaría esto:
if (Build.VERSION.SDK_INT < 23) {
myTextView.setTextAppearance(getApplicationContext(), R.style.normalText);
} else{
myTextView.setTextAppearance(R.style.normalText);
}
myTextView.setBackgroundResource(R.color.normalTextViewColor);
Como sugirió Jonathan, usando textView.setTextTypeface
Works, lo usé en una aplicación hace unos segundos.
textView.setTypeface(null, Typeface.BOLD); // Typeface.NORMAL, Typeface.ITALIC etc.
TextView tvCompany = (TextView)findViewById(R.layout.tvCompany);
tvCompany.setTypeface(null,Typeface.BOLD);
Lo configura desde el código. Tipografía
Programáticamente: tiempo de ejecución
Puede hacerlo mediante programación 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: tiempo de diseño
También puede establecer en XML:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Espero que esto ayude
Summved
Descubrí textView.setTypeface(Typeface.DEFAULT_BOLD);
que es el método más simple.
prueba esta línea de código.
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
aquí, obtendrá el tipo de letra actual de esta vista de texto y lo reemplazará con el nuevo tipo de letra. Aquí hay un nuevo tipo de letra, DEFAULT_BOLD
pero puede aplicar muchos más.
Ver doco para setText () en TextView http://developer.android.com/reference/android/widget/TextView.html
Para diseñar sus cadenas, adjunte objetos android.text.style. * A SpannableString, o consulte la documentación de Tipos de recursos disponibles para ver un ejemplo de cómo configurar texto formateado en el archivo de recursos XML.