android - 使用 Paint.getTextBounds 时如何考虑换行
问题描述
我正在开发一个 android 应用程序,我想在不同的屏幕尺寸上放置文本。我想估计一个 TextView 的适当高度,以便文本适合其中。文本包含换行符(“\n”):
TextView table3team1 ...
....
Paint paint = new Paint();
Rect bounds = new Rect();
paint.setTypeface(table3team1.getTypeface());
paint.setTextSize((float)scheddateminsize);
String text = table3team1.getText().toString();
paint.getTextBounds(text, 0, text.length(), bounds);
int maxlines = 0;
int lines = text.length() - text.replace("\n", "").length();
maxlines = lines;
int height_in_pixels = maxlines * bounds.height();
table3team1.setMinHeight(height_in_pixels);
table3team2.setMinHeight(height_in_pixels);
在上面的代码中,我通过将文本行数(换行字符数)乘以估计的一行高度(paint.getTextBounds 函数)来估计文本高度。当文本的每一行都适合一行时,它确实可以完美地工作。但是,如果文本较长,它会自动转到下一行,从而使行数比我想象的要多,并且文本不适合边界:
您可以从该图像中看到底部的一些文本不适合。由于文本不适合一行,是否可以获得文本的边界,包括考虑换行符和换行符的高度?或者有没有其他方法可以做到这一点?
解决方案
推荐阅读
- angular - Angular, svg - 在 svg 中动态创建圆圈
- php - 从数据表中搜索预加载关系的访问器
- elasticsearch - Elastic5.4:如何跟踪删除索引的完成?
- javascript - 如何在滚动时垂直移动元素,但仅在相应的 BS4 容器中
- java - java中的置换算法
- java - 如何在android studio中创建新活动
- python - 在外部 python 脚本中运行 Google Apps 代码
- c# - WPF UserControl Mouseover 更改子边框样式
- scala - 在 Scala Play 中返回 json 对象中的文件
- javascript - Javascript while 在控制台中不起作用