Android 文本框英文数字和汉字自动换行问题
2017-11-23 14:31
411 查看
最近因为要显示一些订单列表,突然间发现一些数字和汉字混合了之后,TextView就给自动换行了,然后到网上找了许久,都是要将半角转换成全角,然后转换过后,就会发现,数字后面会接一个空格,导致拍本很不协调。最后参考了下面一片博客,然后重写了TextView,进行换行。
原地址:http://gundumw100.iteye.com/blog/1420725
具体就只需要重写onDraw方法就行了
这个时候,文本就不会提前换行了,而且也不会出现半角转全角的排版问题了。
原地址:http://gundumw100.iteye.com/blog/1420725
具体就只需要重写onDraw方法就行了
protected void onDraw(Canvas canvas) { TextPaint mPaint = getPaint(); Paint.FontMetrics fm = mPaint.getFontMetrics(); float baseline = fm.descent - fm.ascent; float x = 0; float y = baseline; //由于系统基于字体的底部来绘制文本,所有需要加上字体的高度。 String txt = getText().toString(); //文本自动换行 String[] texts = autoSplit(txt, mPaint, getWidth() - 5); System.out.printf("line indexs: %s\n", Arrays.toString(texts)); for (String text : texts) { canvas.drawText(text, x, y, mPaint); //坐标以控件左上角为原点 y += baseline + fm.leading; //添加字体行间距 } } /** * 自动分割文本 * * @param content 需要分割的文本 * @param p 画笔,用来根据字体测量文本的宽度 * @param width 最大的可显示像素(一般为控件的宽度) * @return 一个字符串数组,保存每行的文本 */ private String[] autoSplit(String content, Paint p, float width) { int length = content.length(); float textWidth = p.measureText(content); if (textWidth <= width) { return new String[]{content}; } int start = 0, end = 1, i = 0; int lines = (int) Math.ceil(textWidth / width); //计算行数 String[] lineTexts = new String[lines]; while (start < length) { if (p.measureText(content, start, end) > width) { //文本宽度超出控件宽度时 lineTexts[i++] = (String) content.subSequence(start, end); start = end; } if (end == length) { //不足一行的文本 lineTexts[i] = (String) content.subSequence(start, end); break; } end += 1; } return lineTexts; }
这个时候,文本就不会提前换行了,而且也不会出现半角转全角的排版问题了。
相关文章推荐
- Android TextView 对于汉字与数字混合导致换行混乱的问题
- xhtmlrenderer进行HTML转PDF【解决中文、数字、英文过长自动换行问题】
- 【转】解决长串英文字母显示不能自动换行的问题和td中汉字自动换行 && CSS强制不换行
- 解决汉字+数字和英文会换行的问题
- 解决长串英文字母显示不能自动换行的问题和td中汉字自动换行 && CSS强制不换行
- html td 换行-解决长串英文字母或者数字不能自动换行的问题
- 自动换行问题,而连续的数字和英文字符常常将容器撑大,下面介绍的是CSS如何实现换行的方法
- css解决英文字符与阿位伯数字自动换行
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- 解决长串英文字母显示不能自动换行的问题
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- css 解决英文字符与阿位伯数字自动换行
- 用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
- 解决datagrid汉字换行,数字和字母不换行的问题
- 如何限制文本框只能输入数字,小数点,英文,汉字等各类代码