自定义TextView,解决布局乱的问题
2014-06-12 14:12
453 查看
public class NsTextView extends TextView {
private String text;
private float textSize;
private float paddingLeft;
private float paddingRight;
private int textColor;
private Paint paint1 = new Paint();
private float textShowWidth;
public NsTextView(Context context, AttributeSet attrs) {
super(context, attrs);
text = this.getText().toString();
textSize = this.getTextSize();
textColor = this.getTextColors().getDefaultColor();
paddingLeft = this.getPaddingLeft();
paddingRight = this.getPaddingRight();
paint1.setTextSize(textSize);
paint1.setColor(textColor);
paint1.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
textShowWidth = this.getMeasuredWidth() - paddingLeft - paddingRight;
int lineCount = 0;
text = this.getText().toString();
if (text == null)
return;
char[] textCharArray = text.toCharArray();
float drawedWidth = 0;
float charWidth;
for (int i = 0; i < textCharArray.length; i++) {
charWidth = paint1.measureText(textCharArray, i, 1);
if (textCharArray[i] == '\n') {
lineCount++;
drawedWidth = 0;
continue;
}
if (textShowWidth - drawedWidth < charWidth) {
lineCount++;
drawedWidth = 0;
}
canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth,
(lineCount + 1) * (textSize + 5), paint1);
drawedWidth += charWidth;
}
setHeight((int) ((lineCount + 1) * (int) (textSize + 5)) + 5);
}
}
private String text;
private float textSize;
private float paddingLeft;
private float paddingRight;
private int textColor;
private Paint paint1 = new Paint();
private float textShowWidth;
public NsTextView(Context context, AttributeSet attrs) {
super(context, attrs);
text = this.getText().toString();
textSize = this.getTextSize();
textColor = this.getTextColors().getDefaultColor();
paddingLeft = this.getPaddingLeft();
paddingRight = this.getPaddingRight();
paint1.setTextSize(textSize);
paint1.setColor(textColor);
paint1.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
textShowWidth = this.getMeasuredWidth() - paddingLeft - paddingRight;
int lineCount = 0;
text = this.getText().toString();
if (text == null)
return;
char[] textCharArray = text.toCharArray();
float drawedWidth = 0;
float charWidth;
for (int i = 0; i < textCharArray.length; i++) {
charWidth = paint1.measureText(textCharArray, i, 1);
if (textCharArray[i] == '\n') {
lineCount++;
drawedWidth = 0;
continue;
}
if (textShowWidth - drawedWidth < charWidth) {
lineCount++;
drawedWidth = 0;
}
canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth,
(lineCount + 1) * (textSize + 5), paint1);
drawedWidth += charWidth;
}
setHeight((int) ((lineCount + 1) * (int) (textSize + 5)) + 5);
}
}
相关文章推荐
- 自定义View,解决百分比布局适配时Textview的字体Textsize比例缩放问题
- 通过自定义TextView,拉伸每行解决自动换行文字排版参差不齐问题
- Android 解决TextVIew加载自定义字体慢的问题
- 对android里布局文件当中的TextView对象设置事件监听,但是不响应问题解决
- 解决TextView排版不齐问题----自定义TextVIew
- 自定义TextView解决超长文字显示的问题
- android 解决百分比布局适配时Textview的字体Textsize比例缩放问题
- 解决百分比布局适配时Textview的字体Textsize比例缩放问题
- 自定义TextView,解决文字换行,\n换行符换行,导致高度计算不对问题(计算ListView高度)
- RecyclerView嵌套多个布局,多个editText,解决文本输入框上下交换位置中的值问题
- Android 自定义Gridview 解决RecyclerView布局适应问题
- android自定义view解决textview显示排版的问题
- AndroidTextView的跑马灯效果,解决复杂布局不能获取焦点的问题
- Android自定义TextView根据控件高度和宽度,解决字体适配问题
- 【完美解决系列】Android在自定义Dialog中TextView内容显示不全的问题
- Android自定义View研究(七)--XML中布局自定义View时View触摸原点问题
- 解决android系统TextView自动换行不美观问题
- 移植自定义View过程中遇到的问题及解决方法
- 解决Android中TextView首行缩进的问题
- android 获取网络数据,回传到本地用TextView显示乱码问题解决方法