查找 TextView 的文本大小

Posted

技术标签:

【中文标题】查找 TextView 的文本大小【英文标题】:Find text size for TextView 【发布时间】:2018-04-21 15:01:52 【问题描述】:

我正在使用(水平)PagerView,它在屏幕上显示 1 页,用户可以通过向左或向右滑动来切换页面。 每个页面在一个RelativeLayout中都有几个视图,其中一个是TextView中的描述文本(它的大小是用权重计算的)。

我希望所有页面的描述文本都使用相同的字体大小。

这个需要根据最长的描述(所有页面中的TextViews高度相同)。

我事先有一个包含所有描述的数组,但我没有渲染 TextView,因为它们位于不同的页面中,并且 android 在滚动到页面之前不会绘制它。

知道如何计算正确的字体大小吗?

【问题讨论】:

我还没用过,但是这样可以吗? developer.android.com/guide/topics/ui/look-and-feel/… 它不会使所有 TextView 的大小相同 【参考方案1】:

找到了解决方案,所以只是分享。 这很容易使用 StaticLayout 实现。创建 StaticLayout 时,您指定其宽度并可以检查其高度(如果文本太长,它将自动在新行中开始文本)。 只需遍历您的“文本数组”,为每一行文本创建一个具有所需宽度的 StaticLayout,并确保它的高度适合您的 TextView 高度,如果不是,请减小字体大小并重新检查。您最终将获得适合 TextView 大小的最大字体大小。

【讨论】:

【参考方案2】:

获取第一个 textview 文本大小和字体。然后将该大小和字体设置为其他文本视图。或者您可以获取 textview 的高度和宽度并将其设置给其他人。

        float size = textView1.getTextSize(); //get the size of the textview text
        textView2.setTextSize(size) //set the size for other textview's texts

//if you want look in same size, all text must have same TypeFace(Font). To do that use.
        textView1.getTypeFace();
        textView2.setTypeFace();

//or you can get hight & width of the textview.    
    textView.setText("GetHeight");
    textView.measure(0, 0);       //must call measure!
    textView.getMeasuredHeight(); //get height
    textView.getMeasuredWidth();  //get width

//set textview height & width
    LayoutParams params = (LayoutParams) textView.getLayoutParams();
    params.height = 70;
    params.width = 100;        
    textView.setLayoutParams(params);

【讨论】:

我不想让所有其他TextViews像第一个一样,我想通过最长的文本计算TextView的最大字体,然后将字体应用于所有TextViews,其中大部分还没有渲染,只有当我刷 PagerView

以上是关于查找 TextView 的文本大小的主要内容,如果未能解决你的问题,请参考以下文章

如何查找每行的 android TextView 字符数?

Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小

如果文本字符串小于屏幕大小,则使 textview 选取框

Android,在TextView中调整我的文本大小的问题[重复]

调整片段中 TextView 的文本大小

如何从小部件上的 TextView 获取默认文本大小?