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.

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; } 
  • Cómo cambiar fontFamily de TextView en Android
  • Tipface personalizado en android ListView con SimpleAdapter
  • Fuentes personalizadas y texto personalizado en Android
  • Tipo de letra para Android DatePicker
  • Android Fuente personalizada Spannable Tipo de letra
  • ¿Cómo hacer cursivo el trabajo de TextView en la vista de diseño gráfico de Eclipse? Incluso cuelga el PC
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.