Multiple TypeFace en TextView único
Quiero fijar el primer carácter en TextView
con un TypeFace
y el segundo carácter con una cara diferente del tipo y así sucesivamente.
He leído este ejemplo:
Spannable str = (Spannable) textView.getText(); str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, 7 ,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Pero no me ayudó, porque quiero establecer múltiples TypeFace (external TTFs)
¿¿Alguna idea??
- Android: Diferencia entre getCount () y getChildCount () en ListView
- Diálogo de fragmentos sin edición de título
- Trigger galaxia S4 sensor de infrarrojos de desarrollo de aplicaciones?
- .execute no se puede resolver a un tipo - AsyncTask (Android)
- ¿Cómo se pueden manejar múltiples solicitudes para llenar modelos con RXJava Observables?
- Botón de acción flotante Android API 19 (KitKat)
- Detección de círculos de Hough android
- ¿Cuál es el objetivo de establecer el tamaño mínimo del montón en una aplicación para Android?
- ¿Los campos de lectura de un objeto Realm son más lentos que los objetos java?
- ¿Cuál es el diferente de entry.softTtl y entry.ttl en volley?
- Preferencias de listas de Android: ¿tiene un resumen como valor seleccionado?
- Android: pasa la referencia de función a AsyncTask
- No se puede crear el controlador dentro de hilo que no ha llamado Looper.prepare () en el diálogo de diálogo de alerta
Utilice el siguiente código: (Estoy usando fuente Bangla y Tamil)
TextView txt = (TextView) findViewById(R.id.custom_fonts); txt.setTextSize(30); Typeface font = Typeface.createFromAsset(getAssets(), "Akshar.ttf"); Typeface font2 = Typeface.createFromAsset(getAssets(), "bangla.ttf"); SpannableStringBuilder SS = new SpannableStringBuilder("আমারநல்வரவு"); SS.setSpan (new CustomTypefaceSpan("", font2), 0, 4,Spanned.SPAN_EXCLUSIVE_INCLUSIVE); SS.setSpan (new CustomTypefaceSpan("", font), 4, 11,Spanned.SPAN_EXCLUSIVE_INCLUSIVE); txt.setText(SS);
El resultado es:
Esto utiliza la clase CustomTypefaceSpan
, tomada de ¿Cómo puedo utilizar TypefaceSpan o StyleSpan con un tipo de letra personalizado? :
package my.app; import android.graphics.Paint; import android.graphics.Typeface; import android.text.TextPaint; import android.text.style.TypefaceSpan; public class CustomTypefaceSpan extends TypefaceSpan { private final Typeface newType; public CustomTypefaceSpan(String family, Typeface type) { super(family); newType = type; } @Override public void updateDrawState(TextPaint ds) { applyCustomTypeFace(ds, newType); } @Override public void updateMeasureState(TextPaint paint) { applyCustomTypeFace(paint, newType); } private static void applyCustomTypeFace(Paint paint, Typeface tf) { int oldStyle; Typeface old = paint.getTypeface(); if (old == null) { oldStyle = 0; } else { oldStyle = old.getStyle(); } int fake = oldStyle & ~tf.getStyle(); if ((fake & Typeface.BOLD) != 0) { paint.setFakeBoldText(true); } if ((fake & Typeface.ITALIC) != 0) { paint.setTextSkewX(-0.25f); } paint.setTypeface(tf); } }
Prueba esto
textview.setText(Html.fromHtml("<i><u>yr text</u></i>")); textview.setTypeface(yr typeface)
- Fondo transparente en CardView – Android
- Cómo eliminar todos los oyentes agregados con addTextChangedListener