查找 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实现文本内容自动调整字体大小以适应TextView的大小