自定义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;
}
}
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;
}
}
相关文章推荐
- Android代码设置TextView的顶部图及设置图与字体之间距离
- EditText组件drawableLeft属性设置的图片和hint设置的文字之间的距离
- iOS-自定义TextView的方法,可以设置占位文字(placeholder)又可滚动
- Android EditText组件drawableLeft属性设置的图片和hint设置的文字之间的距离
- EditText组件drawableLeft属性设置的图片和hint设置的文字之间的距离
- 自定义TextView,设置占位文字
- android TextView文字透明度的设置
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)
- TextView代码设置文字粗体
- 设置TextView文字居中,代码实现android:layout_gravity
- android--设置TextView部分文字的颜色和背景(高亮显示)
- 设置自定义的Edittext的光标是否显示和被选中文字的背景色
- TextView文字滚动设置
- 利用SpannableStringBuilder设置TextView中部分文字的颜色
- TextView加链接的一些方法以及设置个别文字格式
- 设置TextView个别文字字体颜色格式
- 设置TextView文字居中
- 设置TextView文字居中