Wie macht man zwischen Buchstaben in Android TextView?

Ich brauche Design aus Photoshop Layout. Es gibt einige Schriften auf den Layouts. Designer hat mir diese Schriftarten gegeben. Aber auf Layout in Photoshop, er verwenden Abstand zwischen Buchstaben. Wie kann ich das in android textView realisieren? Ich fand eine Lösung:

Antwort auf Stackoverflow

Antworte zwei

Aber wenn ich myTextView extends TextView es funktioniert falsch. Wenn ich mich für eine Übung anpasse, auf dem Gerät mit Biger-Display, Abstand zwischen Buchstaben erhöhen ist nicht proportional.

BEARBEITEN

 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); } } } 

Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.