Tencent / QMUI_Android

提高 Android UI 开发效率的 UI 库
http://qmuiteam.com/android
Other
14.39k stars 2.67k forks source link

QMUIVerticalTextView希望添加设置字间距功能 #824

Open Liberations opened 4 years ago

Liberations commented 4 years ago

运行环境

具体问题描述

问题截图

Layout Inspector 文件(如何获取)

异常日志(堆栈)

Liberations commented 4 years ago

private void applySpacing() { if (this == null || 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()) { //如果前后都是英文,则不添加空格,防止英文空格太大 if (isEnglish(originalText.charAt(i) + "") && isEnglish(originalText.charAt(i + 1) + "")) { } else { // \u00A0 不间断空格 碰见文字追加空格 builder.append("\u00A0"); } } } // 通过SpannableString类,去设置空格 SpannableString finalText = new SpannableString(builder.toString()); // 如果当前TextView内容长度大于1,则进行空格添加 if (builder.toString().length() > 1) { for (int i = 1; i < builder.toString().length(); i += 2) { // ScaleXSpan 基于x轴缩放 按照x轴等比例进行缩放 通过字间距+1除以10进行等比缩放 finalText.setSpan(new ScaleXSpan((spacing + 1) / 10), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } super.setText(finalText, BufferType.SPANNABLE); } 网上看别人用这个方法

nxnyk commented 3 years ago

private void applySpacing() { if (this == null || 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()) { //如果前后都是英文,则不添加空格,防止英文空格太大 if (isEnglish(originalText.charAt(i) + "") && isEnglish(originalText.charAt(i + 1) + "")) { } else { // \u00A0 不间断空格 碰见文字追加空格 builder.append("\u00A0"); } } } // 通过SpannableString类,去设置空格 SpannableString finalText = new SpannableString(builder.toString()); // 如果当前TextView内容长度大于1,则进行空格添加 if (builder.toString().length() > 1) { for (int i = 1; i < builder.toString().length(); i += 2) { // ScaleXSpan 基于x轴缩放 按照x轴等比例进行缩放 通过字间距+1除以10进行等比缩放 finalText.setSpan(new ScaleXSpan((spacing + 1) / 10), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } super.setText(finalText, BufferType.SPANNABLE); } 网上看别人用这个方法

这个方法能用嘛?具体怎么用呀