Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Establecer una fuente y un color diferentes a parte de un TextView

He intentado esto:

String s = "Some big string" SpannableStringBuilder sb = new SpannableStringBuilder(s); //normal font for 1st 9 chars sb.setSpan(robotoRegular, 0,9,Spannable.SPAN_INCLUSIVE_INCLUSIVE); //bold font for rest of the chars sb.setSpan(robotoBold, 9,s.length(),Spannable.SPAN_INCLUSIVE_INCLUSIVE); //also change color for rest of the chars sb.setSpan(new ForegroundColorSpan(Color.BLACK), 9,s.length(),Spannable.SPAN_INCLUSIVE_INCLUSIVE); textView.setText(sb); 

Pero esto no funcionó.

Sólo toma el setSpan más reciente, es decir, el color del texto se está cambiando pero no la fuente.

  • Cómo cambiar el espaciado de letras en una vista de texto?
  • Cómo cambiar fontFamily de TextView en Android
  • ¿Cómo auto-ajustar el tamaño del texto en un TextView multi-línea de acuerdo con la vista de las dimensiones máximas?
  • Android Paint.setTypeface no funciona para la cursiva
  • Fuentes personalizadas y texto personalizado en Android
  • Android: El tipo de letra se cambia cuando se aplica la contraseña. Escriba en EditarTexto
  • Estilo de texto de Android falta de luz, medio, delgado,
  • Android Fuente personalizada Spannable Tipo de letra
  • 3 Solutions collect form web for “Establecer una fuente y un color diferentes a parte de un TextView”

    Tienes que usar un TypefaceSpan lugar de un Typeface .

    Pero ya que está utilizando una tipografía personalizada que necesita para extender TypefaceSpan .

    Echa un vistazo a esta respuesta y crea la clase CustomTypefaceSpan .

    Ahora haga lo siguiente:

     Typeface robotoRegular = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Regular.ttf"); Typeface robotoBold = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Bold.ttf"); TypefaceSpan robotoRegularSpan = new CustomTypefaceSpan("", robotoRegular); TypefaceSpan robotoBoldSpan = new CustomTypefaceSpan("", robotoBold); // normal font for 1st 9 chars sb.setSpan(robotoRegularSpan, 0, 9, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // bold font for rest of the chars sb.setSpan(robotoBoldSpan, 9, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); // also change color for rest of the chars sb.setSpan(new ForegroundColorSpan(Color.BLUE), 9, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); textView.setText(sb); 

    Compruebe este código: –

     protected void onDraw(Canvas canvas) { Paint circlePaint = new Paint(); Typeface mType = Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC); circlePaint.setTextSize(25); circlePaint.setColor(Color.RED); circlePaint.setTypeface(mType); canvas.drawText("Default Typeface", 50, 100, circlePaint); // circlePaint.setFlags(Paint.UNDERLINE_TEXT_FLAG); circlePaint.setColor(Color.YELLOW); canvas.drawText("Underline Text Flag", 50, 120, circlePaint); // circlePaint.setFlags(Paint.STRIKE_THRU_TEXT_FLAG); circlePaint.setColor(Color.GREEN); canvas.drawText("Strike Thru Text Flag", 50, 140, circlePaint); // circlePaint.setFlags(Paint.ANTI_ALIAS_FLAG); circlePaint.setColor(Color.WHITE); canvas.drawText("Anti Alias Flag", 50, 160, circlePaint); // circlePaint.setFlags(Paint.DEV_KERN_TEXT_FLAG); circlePaint.setColor(Color.WHITE); canvas.drawText("Dev Kern Text Flag", 50, 180, circlePaint); // circlePaint.setFlags(Paint.FAKE_BOLD_TEXT_FLAG); circlePaint.setColor(Color.CYAN); canvas.drawText("Fake Bold Text Flag", 50, 200, circlePaint); } 

    Para peaple que prefieren hacer utils clases para esto:

     public static SpannableStringBuilder makeTextBold (Activity activity, String string, int fromCharIndex, int toCharIndex) { return makeTextBold(activity, new SpannableStringBuilder(string), fromCharIndex, toCharIndex); } public static SpannableStringBuilder makeTextBold (Activity activity, SpannableStringBuilder string, int fromCharIndex, int toCharIndex) { SpannableStringBuilder sb = new SpannableStringBuilder(string); Typeface bold = Typeface.createFromAsset(activity.getAssets(), "fonts/NexaBold.ttf"); TypefaceSpan robotoBoldSpan = new CustomTypefaceSpan("", bold); sb.setSpan(robotoBoldSpan, fromCharIndex, toCharIndex, Spannable.SPAN_INCLUSIVE_INCLUSIVE); return sb; } public static SpannableStringBuilder colorText (int resourceId, String string, Activity activity, int fromCharIndex, int toCharIndex) { return colorText(resourceId, new SpannableStringBuilder(string), activity, fromCharIndex, toCharIndex); } public static SpannableStringBuilder colorText (int resourceId, SpannableStringBuilder sb, Activity activity, int fromCharIndex, int toCharIndex) { sb.setSpan(new ForegroundColorSpan(activity.getResources().getColor(resourceId)), fromCharIndex, toCharIndex, Spannable.SPAN_INCLUSIVE_INCLUSIVE); return sb; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.