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

  • Ändern der Navigationsschublade Ausgewählte Position Farbe von Standard blau
  • Wie ändere ich die Symbolleiste
  • Android: Wie ignoriere oder deaktiviere saveInstanceState?
  • Twitter für Android wie Swipe-to-Side-Schnellmenü
  • Was ist der Unterschied zwischen android.text.format.DateFormat und java.text.DateFormat
  • TextView setGravity () funktioniert nicht in Java
  • 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); } } } 

  • Android / bitmap.h: Keine solche Datei oder ein Verzeichnis (nach dem Aktualisieren von Android SDK-Tools zur Revision 14)
  • Android, wie man bekommt, wenn die Internetverbindung verloren geht?
  • Wenn fotografieren - java.lang.Twrowable: file: // Uri ausgesetzt durch ClipData.Item.getUri ()
  • Android: Wie bekomme ich eine Liste der installierten Aktivitäten, wie sie in Launcher erscheinen, ohne Duplikate
  • Wie man auf lokale Dateien von Dateisystem in Android Emulator zugreifen?
  • Android: Fade View in und out
  • 2 Solutions collect form web for “Wie macht man zwischen Buchstaben in Android TextView?”

    Versuchen Sie es mit der neuen TextView API-Methode setLetterSpacing . Siehe hier

    BEARBEITEN

    Sie können auch Ihre eigene Schriftart mit Leerzeichen innerhalb der Schriftart selbst erstellen und sie auf Ihre TextView anwenden .

    Seit API 21 können Sie verwenden

     setLetterSpacing 

    Dokumentation finden Sie hier

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