16
自动调整Android版TextView
背景 很多时候,我们需要将TextView的字体自动调整到给定的边界。 问题 遗憾的是,即使有很多讨论此问题的线程和帖子(以及建议的解决方案)(例如此处,此处和此处的示例),但它们实际上都无法正常工作。 这就是为什么,我决定测试它们中的每一个,直到找到真正的交易。 我认为此类textView的要求应为: 应该允许使用任何字体,字体,样式和字符集。 应该同时处理宽度和高度 除非文本由于限制而无法容纳,否则不会截断(例如:文本太长,可用大小太小)。但是,仅在这种情况下,我们才可以要求水平/垂直滚动条。 应该允许多行或单行。如果是多行,则允许最大和最小行。 计算不应该慢。使用循环寻找最佳尺寸?至少要对其进行优化,并且不要每次都使采样增加1。 在多行的情况下,应允许调整大小或使用更多行,和/或允许使用“ \ n”字符自行选择行。 我尝试过的 我已经尝试了很多示例(包括我已经写过的那些链接),并且我也尝试过修改它们以处理这些情况,但实际上没有一个。 我制作了一个示例项目,使我可以直观地查看TextView是否可以自动正确拟合。 目前,我的示例项目仅将文本(英文字母加数字)和textView的大小随机化,并使其保持一行,但即使在我尝试过的任何示例中,这也不能很好地起作用。 这是代码(也可以在此处获得): 文件 res/layout/activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Button" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/button1" android:layout_alignParentLeft="true" android:background="#ffff0000" android:layout_alignParentRight="true" android:id="@+id/container" android:layout_alignParentTop="true" /> </RelativeLayout> 文件 src/.../MainActivity.java public class …