我寻找过根据textView的大小自动拟合字体的解决方案,找到了很多,但没有一个支持多行并且正确地做到这一点(不截断文本,也尊重重力值)。
有没有其他人进行过这样的解决方案?
下面的方法对我来说是有效的,比使用基于椭圆的解决方案更好。
void adjustTextScale(TextView t, float max, float providedWidth, float providedHeight) {
// sometimes width and height are undefined (0 here), so if something was provided, take it ;-)
if (providedWidth == 0f)
providedWidth = ((float) (t.getWidth()-t.getPaddingLeft()-t.getPaddingRight()));
if (providedHeight == 0f)
providedHeight = ((float) (t.getHeight()-t.getPaddingTop()-t.getPaddingLeft()));
float pix = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
String[] lines = t.getText().toString().split("\\r?\\n");
// ask paint for the bounding rect if it were to draw the text at current size
Paint p = new Paint();
p.setTextScaleX(1.0f);
p.setTextSize(t.getTextSize());
Rect bounds = new Rect();
float usedWidth = 0f;
// determine how much to scale the width to fit the view
for (int i =0;i<lines.length;i++){
p.getTextBounds(lines[i], 0, lines[i].length(), bounds);
usedWidth = Math.max(usedWidth,(bounds.right - bounds.left)*pix);
}
// same for height, sometimes the calculated height is to less, so use §µ{ instead
p.getTextBounds("§µ{", 0, 3, bounds);
float usedHeight = (bounds.bottom - bounds.top)*pix*lines.length;
float scaleX = providedWidth / usedWidth;
float scaleY = providedHeight / usedHeight;
t.setTextSize(TypedValue.COMPLEX_UNIT_PX,t.getTextSize()*Math.min(max,Math.min(scaleX,scaleY)));
}
我想要一个TextView应该分成4行。对于例如。 注意,重力应为 我试着如下: 这管用!但会产生以下输出: 问题: 对于单词Vishal和vyas之间的空格不起作用。 是harcoded的,可以有任何字符数n的名称,而不是。 请指教。 补充说:如果我需要编写一个自定义的来实现这一点,这是很好的,但我需要一些指导。 提前道谢。
我有一个这样的文本视图: 我将其用作一种运行日志,显示给用户,以便他们可以监控大约需要3分钟的任务进度。然而,一旦我超过8行,文本就会离开屏幕。这对用户来说是不直观的,因为他们无法知道它离开了屏幕,除了通过尝试向下滚动手动轮询。 我怎样才能使每次我在这个文本视图中添加一些文本时,都能将其向下滚动到尽可能低的位置? 另外,这是在Xamarin Android中,但我不认为它是相关的。它和Java之间
Virtualization 虚拟化支持 仅在将此内核用作宿主机(host)的情况下才需要开启这里的子项 Kernel-based Virtual Machine (KVM) support CONFIG_KVM KVM(内核虚拟机)是一种基于Linux内核的全虚拟化技术,需要CPU支持x86硬件虚拟化技术(Intel VT或AMD-V).开启此项后,将可以通过字符文件"/dev/kvm"使用虚拟
很多时候,我们需要将TextView的字体自动调整到给定的边界。 可悲的是,即使有很多线程和帖子(以及建议的解决方案)在谈论这个问题(这里,这里和这里的例子),但没有一个实际工作得很好。 这就是为什么,我决定测试他们每一个直到我找到真正的交易。 我认为这样一个textView的要求应该是: > 应允许使用任何字体、字体、样式和字符集。 应同时处理宽度和高度 没有截断,除非文本不能适合,因为限制,我
为您的 Flarum 添加新的界面语言很简单。按照下面的说明,下载并安装语言包即可。 在您安装并启用一个语言包后,您可以将其 设置为您论坛的默认语言。当您可以 随时禁用 用不到的语言。如果您有使用任何第三方扩展,请务必在开始前 阅读社区扩展说明。 欲开始,请访问 Flarum 社区上的 Extensions > Languages 标签,并找到您想要安装的语言包。 语言包的安装方式与 扩展 相同。