Android开发之TextView排版问题
2023-09-11 14:17:59 时间
下面直接是关于解决该问题的代码(根据别人的代码进行了修正以及测试,保证可以修改字体尺寸、颜色、根据padding调整,如果需要支持其他的格式可以将对应的属性添加至Paint类型的对象中):
1 public class NsTextView extends TextView {
2 private String text;
3 private float textSize;
4 private float paddingLeft;
5 private float paddingRight;
6 private int textColor;
7 private Paint paint1 = new Paint();
8 private float textShowWidth;
9
10 public NsTextView(Context context, AttributeSet attrs) {
11 super(context, attrs);
12 text = this.getText().toString();
13 textSize = this.getTextSize();
14 textColor = this.getTextColors().getDefaultColor();
15 paddingLeft = this.getPaddingLeft();
16 paddingRight = this.getPaddingRight();
17 paint1.setTextSize(textSize);
18 paint1.setColor(textColor);
19 paint1.setAntiAlias(true);
20 }
21
22 @Override
23 protected void onDraw(Canvas canvas) {
24 textShowWidth = this.getMeasuredWidth() - paddingLeft - paddingRight;
25 int lineCount = 0;
26 text = this.getText().toString();
27 if (text == null)
28 return;
29 char[] textCharArray = text.toCharArray();
30 float drawedWidth = 0;
31 float charWidth;
32 for (int i = 0; i < textCharArray.length; i++) {
33 charWidth = paint1.measureText(textCharArray, i, 1);
34 if (textCharArray[i] == '\n') {
35 lineCount++;
36 drawedWidth = 0;
37 continue;
38 }
39 if (textShowWidth - drawedWidth < charWidth) {
40 lineCount++;
41 drawedWidth = 0;
42 }
43 canvas.drawText(textCharArray, i, 1, paddingLeft + drawedWidth,
44 (lineCount + 1) * textSize, paint1);
45 drawedWidth += charWidth;
46 }
47 setHeight((int) ((lineCount + 1) * (int) textSize ));
48 }
49 }
相关文章
- Android BottomNavigationView 设置选中颜色和默认颜色的两种实现方法
- Android弹球游戏
- 5年Android开发工程师分享,最新Android面试题库及答案解析
- Android USB转串口通信开发实例详解
- Android USB转串口开发(hoho.android.usbserial串口库)
- Android开发工程师文集-layout_weight讲解
- Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
- 从零开始学android开发-View的setOnClickListener的添加方法
- 《Android 应用案例开发大全(第二版)》——2.8节工具常量类
- 《Android游戏开发详解》一2.15 改进程序
- 《Java和Android开发学习指南(第2版)》—— 1.3 Java编码惯例
- 《Android游戏开发详解》——导读
- 《Android智能穿戴设备开发指南》——第6章,第6.1节Socket编程基础
- 《Android应用开发入门经典(第3版)》——第1.4节运行应用
- 《Java和Android开发实战详解》——1.4节搭建Java开发环境
- Android开发之旅:android架构
- Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航
- android开发 textview根据字数长度自动调整字体大小
- Android使用GoogleMap实现定位与路径检索功能
- 《OpenGL ES应用开发实践指南:Android卷》—— 1.2 创建第一个程序
- Android 4.0 更新后 启动不了.