您的位置:首页 > 其它

自定义TextView中的文字之间设置子间距离

2017-05-11 00:51 225 查看
使用的时候,要在JAVA代码中调用settext方法设置文字,调用setSpacing设置字间距(float类型)

public class MyTextView extends TextView {

private float spacing = Spacing.NORMAL;

private CharSequence originalText = “”;

public MyTextView(Context context) {

super(context);

}

public MyTextView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MyTextView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

public float getSpacing() {

return this.spacing;

}

public void setSpacing(float spacing) {

this.spacing = spacing;

applySpacing();

}

@Override

public void setText(CharSequence text, BufferType type) {

originalText = text;

applySpacing();

}

@Override

public CharSequence getText() {

return originalText;

}

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()) {

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((spacing + 1) / 10), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}

}

super.setText(finalText, BufferType.SPANNABLE);

}

public class Spacing {

public final static float NORMAL = 0;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: