自定义spacingTextView 继承TextView,代码如下:

public class SpacingTextView extends TextView {
private float letterSpacing = LetterSpacing.BIGGEST;
private CharSequence originalText = “”;

public SpacingTextView(Context context) {    super(context);}public SpacingTextView(Context context, AttributeSet attrs){    super(context, attrs);    originalText = super.getText();    applyLetterSpacing();    this.invalidate();}public SpacingTextView(Context context, AttributeSet attrs, int defStyle){    super(context, attrs, defStyle);}public float getLetterSpacing() {    return letterSpacing;}public void setLetterSpacing(float letterSpacing) {    this.letterSpacing = letterSpacing;    applyLetterSpacing();}@Overridepublic void setText(CharSequence text, BufferType type) {    originalText = text;    applyLetterSpacing();}@Overridepublic CharSequence getText() {    return originalText;}/** * 字距为任何字符串(技术上,一个简单的方法为CharSequence不使用)的TextView */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.toLowerCase());        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);}public class LetterSpacing {    public final static float NORMAL = 0;    public final static float NORMALBIG = (float)0.025;    public final static float BIG = (float)0.05;    public final static float BIGGEST = (float)0.2;}

}

代码中调用:
public class SpacingTextViewActivity extends BaseActivity {

private SpacingTextView spacingTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_spacing_text_view);    spacingTextView=findView(R.id.space_text);    spacingTextView.setText(getResources().getString(R.string.space_test));    spacingTextView.setLetterSpacing(ConvertUtils.dip2px(this,20));}

}

更多相关文章

  1. 探寻 Android 代码抄袭细节,情节还不算严重
  2. Android studio 提取文件指定字符串
  3. Android清除本地数据缓存代码案例
  4. 【Android学习笔记】AutoCompleteTextView(数组在代码中)
  5. Android 高通代码预制apk可卸载,恢复出厂设置apk可恢复 Android M
  6. 36个Android开发常用经典代码大全
  7. 移动网站开发中常用的10段JavaScript代码
  8. Android Studio制作简易计算器源代码及详解

随机推荐

  1. OnClickListener是匿名内部类为什么不导
  2. Android(安卓)Studio 如果修改LogCat的颜
  3. Android(安卓)中Crash时如何获取异常信息
  4. android应用程序线程的监控
  5. Android一键分享——原生分享图片
  6. Android开源游戏引擎之Angle(一)——概述
  7. 无需Root也能使用Xposed!
  8. 转:Android中自定义SeekBar的背景颜色,进度
  9. Android如何让你的第三方库可以compile的
  10. Android(安卓)多渠道打包(二)--动态多渠道资