android没有属性来控制文本中的字间距问题,但是可以通过stringbuilder和SpannableString来得到你想要的字间距,归根结底也就是在字与字之间加上空格,通过SpannableString来进行调整文本格式,得到你想要的文本。
以下是网上找的一个自定义的一个TextView来实现字间距的示例
* 设置间距
*/
private void applySpacing() {
if (this.mOriginalText == null || this.mOriginalText.length() == 0) return;
Paint testPaint = new Paint();
testPaint.set(this.getPaint());
float spaceOriginalSize = testPaint.measureText("\u00A0");
Log.d("Hfeng_test", "spaceing ="+mSpacing);
Log.d("Hfeng_test", "spaceOrignalSize ="+spaceOriginalSize);
float spaceScaleXFactor = ( spaceOriginalSize > 0 ? mSpacing/spaceOriginalSize : 1);
StringBuilder builder = new StringBuilder();
for(int i = 0; i < mOriginalText.length(); i++) {
builder.append(mOriginalText.charAt(i));
if(i+1 < mOriginalText.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(spaceScaleXFactor), i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
super.setText(finalText, BufferType.SPANNABLE);
}