Cómo cambiar el espaciado de letras en una vista de texto?

¿Cómo puedo cambiar el espaciado de las letras en una vista de texto? ¿Le ayudará si tengo texto HTML en él (no puedo usar webview en mi código).

PS Estoy usando mi propio tipo de letra en el textview con texto HTML.

7 Solutions collect form web for “Cómo cambiar el espaciado de letras en una vista de texto?”

Echa un vistazo a android: textScaleX

Dependiendo del espacio que necesite, esto podría ayudar. Eso es lo único remotamente relacionado con el espaciado de letras en el TextView.

Editar: por favor, vea @ JerabekJakub respuesta a continuación para un método actualizado, mejor para hacer esto a partir de api 21 (Lollipop)

Desde la API 21 existe una opción de espaciado entre letras. Puede llamar al método setLetterSpacing o establecerlo en XML con el atributo letterSpacing .

Esta respuesta se basa en la respuesta de Pedro, pero ajustada por lo que también funciona si el atributo de texto ya está establecido:

 package nl.raakict.android.spc.widget; import android.content.Context; import android.text.Spannable; import android.text.SpannableString; import android.text.style.ScaleXSpan; import android.util.AttributeSet; import android.widget.TextView; public class LetterSpacingTextView extends TextView { private float letterSpacing = LetterSpacing.BIGGEST; private CharSequence originalText = ""; public LetterSpacingTextView(Context context) { super(context); } public LetterSpacingTextView(Context context, AttributeSet attrs){ super(context, attrs); originalText = super.getText(); applyLetterSpacing(); this.invalidate(); } public LetterSpacingTextView(Context context, AttributeSet attrs, int defStyle){ super(context, attrs, defStyle); } public float getLetterSpacing() { return letterSpacing; } public void setLetterSpacing(float letterSpacing) { this.letterSpacing = letterSpacing; applyLetterSpacing(); } @Override public void setText(CharSequence text, BufferType type) { originalText = text; applyLetterSpacing(); } @Override public CharSequence getText() { return originalText; } private void applyLetterSpacing() { if (this == null || this.originalText == null) return; StringBuilder builder = new StringBuilder(); for(int i = 0; i < originalText.length(); i++) { String c = ""+ originalText.charAt(i); builder.append(c.toLowerCase()); if(i+1 < originalText.length()) { builder.append("\u00A0"); } } SpannableString finalText = new SpannableString(builder.toString()); if(builder.toString().length() > 1) { for(int i = 1; i < builder.toString().length(); i+=2) { finalText.setSpan(new ScaleXSpan((letterSpacing+1)/10), i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } super.setText(finalText, BufferType.SPANNABLE); } public class LetterSpacing { public final static float NORMAL = 0; public final static float NORMALBIG = (float)0.025; public final static float BIG = (float)0.05; public final static float BIGGEST = (float)0.2; } } 

Si desea utilizarlo de forma programática:

 LetterSpacingTextView textView = new LetterSpacingTextView(context); textView.setSpacing(10); //Or any float. To reset to normal, use 0 or LetterSpacingTextView.Spacing.NORMAL textView.setText("My text"); //Add the textView in a layout, for instance: ((LinearLayout) findViewById(R.id.myLinearLayout)).addView(textView); 

He construido una clase personalizada que extiende TextView y resuelve este problema … Echa un vistazo a mi respuesta aquí =)

Después de API> = 21 hay un método inbuild proporcionado por TextView llamado setLetterSpacing

Compruebe esto para más

Como android no admite tal cosa, puede hacerlo manualmente con FontCreator. Tiene buenas opciones para modificar la fuente. He utilizado esta herramienta para construir una fuente personalizada, incluso si se necesita algunas veces, pero siempre se puede utilizar en sus proyectos.

Para incrustar texto HTML en su textview puede usar la sintaxis HTML.fromHTML (). Más información que obtendrá de http://developer.android.com/reference/android/text/Html.html#fromHtml%28java.lang.String%29

  • Cómo puedo mostrar el texto de HIndi en la tableta Android
  • Android: El tipo de letra se cambia cuando se aplica la contraseña. Escriba en EditarTexto
  • Tipface personalizado en android ListView con SimpleAdapter
  • Tipo de letra para Android DatePicker
  • ¿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 5.0 (API 21) no puede mostrar fuentes / tipos de letra personalizados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.