我一直在寻找一种在文本视图中自动调整文本的方法。通过我的搜索,我发现了许多解决方案,例如:
但像许多其他人一样,这些并不能解决我的问题。当我们使用带有多行的 TextView 时,它们无法按预期工作。
基本上我的目标是这个:
如您所见,文本根据宽度、高度调整大小并注意换行,创建多行文本视图。还可以更改字体。
我解决这个问题的一个想法是这样的:
int size = CONSTANT_MAX_SIZE;
TextView tv = (TextView) findViewById(R.id.textview1)
while(Math.abs(tv.getMeasuredHeight()) >= TEXTVIEW_MAX_HEIGHT) {
size--;
tv.setTextSize(size);
tv.measure(MeasureSpec.UNSPECIFIED,MeasureSpec.UNSPECIFIED);
i++;
}
CONSTANT_MAX_SIZE 是一个常量,定义了字体的最大尺寸(TextView 中的 textsize 专有)
TEXTVIEW_MAX_HEIGHT 是一个常量,它定义了 textview 可以拥有的最大尺寸。
每次更改 textview 中的文本时都会调用此方法。
textview xml 是这样的:
<TextView
android:id="@+id/textview1"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:singleLine="false"
android:inputType="textMultiLine"
android:text=""
android:textSize="150sp" />
由于 XML 中的宽度会受到限制,因此只需要考虑视图的高度,因为调整它 android 会在需要时自动创建多行。
尽管这是一个潜在的解决方案,但效果并不理想(远非如此),并且它不支持缩小尺寸(当您删除文本时)。
有什么建议和/或想法吗?