自定义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平台开发-Power management-电源管理
  2. Android(安卓)studio 提取文件指定字符串
  3. 探寻 Android(安卓)代码抄袭细节,情节还不算严重
  4. Android————一个简单的新闻面板
  5. Android(安卓)编译流程解析01-AppPlugin初始化
  6. android ndk与sdk
  7. Android服务监控
  8. EditText光标不显示问题
  9. android 开发中判断网络是否连接的代码

随机推荐

  1. Android(安卓)用户界面(User Interface)概
  2. Android--数据持久化之内部存储、Sdcard
  3. [Android入门]1. Android开发环境搭建
  4. Android中使用Movie显示gif动态图
  5. 全面解析Activity的生命周期
  6. Android布局文件属性
  7. 解决Android studio升级到3.5的一些问题
  8. Android中SQLite数据库介绍
  9. 温馨提示:Android(安卓)的 XML 文件是是区
  10. Google提供更好的Android应用程序翻译服