Comment faire de l'espacement entre les lettres d'un TextView Android?

J'ai besoin de faire de la conception de photoshop mise en page. Il y a quelques polices sur les mises en page.
Designer m'a donné ce polices. Mais sur la mise en page dans photoshop, il utiliser l'espacement entre les lettres. Comment je peux réaliser cela dans textView android? J'ai trouvé une solution:

réponse sur stackoverflow

répondre à deux

mais si je fais myTextView extends TextView il fonctionne mal. Si je adapter pour un élaborer, sur l'appareil avec biger d'affichage, l'espacement entre les lettres augmentation n'est pas proportionnelle.

MODIFIER

public class MyTextView extends TextView {
private float letterSpacing = 0.0f;
private CharSequence originalText = "";
private Typeface typeface;
public MyTextView(Context context) {
this(context, null);
isInEditMode();
}
public MyTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
isInEditMode();
}
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray attributesArray = getResources().obtainAttributes(attrs, R.styleable.MyTextView);
letterSpacing = attributesArray.getDimension(R.styleable.MyTextView_letterSpacing, 0.0f);
String fontName = attributesArray.getString(R.styleable.MyTextView_fontName);
if(!this.isInEditMode()) {
if (null == fontName) {
typeface = Fonts.getBlockBertholdRegular(context);
} else {
typeface = Fonts.get(context, fontName);
}
super.setTypeface(typeface);
}
originalText = super.getText();
applyLetterSpacing();
this.invalidate();
}
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.toUpperCase());
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);
if(!this.isInEditMode()) {
super.setTypeface(typeface);
}
}
}
"Si je adapter pour concevoir un" Pourriez-vous nous montrer le code qui vous le faire?
code no. Je le fais redimensionner jusqu'à ce qu'ils coïncident avec photoshop.
Avez-vous essayez de créer un personnalisé textView? (myTextView extends TextView) Dans l'affirmative, ce qui fonctionne mal?
Oui, mais vous n'avez pas à fournir le code ou les explications de ce qui s'est passé! merci pour le code.
vous pouvez également afficher cette réponse ensemble stackoverflow.com/questions/1640659/...

OriginalL'auteur ip696 | 2015-04-16