How to adjust text kerning in Android TextView?

后端 未结 12 1603
醉话见心
醉话见心 2020-11-30 20:20

Is there a way to adjust the spacing between characters in an Android TextView? I believe this is typically called \"kerning\".

I\'m aware of the

12条回答
  •  情书的邮戳
    2020-11-30 21:10

    There's a small edit of @Pedro Barros answer. It is useful if you use SpannableString to set it, e.g. if you want to make different colors of some characters:

    private void applySpacing() {
        SpannableString finalText;
    
        if (!(originalText instanceof SpannableString)) {
            if (this.originalText == null) return;
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < originalText.length(); i++) {
                builder.append(originalText.charAt(i));
                if (i + 1 < originalText.length()) {
                    builder.append("\u00A0");
                }
            }
            finalText = new SpannableString(builder.toString());
        } else {
            finalText = (SpannableString) originalText;
        }
    
        for (int i = 1; i < finalText.length(); i += 2) {
            finalText.setSpan(new ScaleXSpan((spacing + 1) / 10), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        super.setText(finalText, TextView.BufferType.SPANNABLE);
    }
    

提交回复
热议问题