凌雪
2018-11-29
来源 :网络
阅读 1397
评论 0
摘要:本文将带你了解Android应用开发之Android 自定义设置文本字体间间距,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发之Android 自定义设置文本字体间间距,希望本文对大家学Android有所帮助。
自定义spacingTextView 继承TextView,代码如下:
public class SpacingTextView extends TextView {
private float letterSpacing = LetterSpacing.BIGGEST;
private CharSequence originalText = “”;
?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364<code>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;}</code>
}
代码中调用:
public class SpacingTextViewActivity extends BaseActivity {
<code><code>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)); }</code></code>
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号