Android:在 ListView 项目中自动缩放文本

发布于 2024-11-18 16:53:48 字数 786 浏览 1 评论 0原文

我已经构建了一个 ListView 和我的项目 - 至少部分 - 包含各种(文本)长度的标题。 为了使用户能够阅读尽可能多的标题,我尝试更改我的适配器以自动为我的文本选择可行的字体大小。

因此,我正在使用 TextView 的绘制对象来测量 basline 字体大小 (14dp) 中的文本,并尝试与可用空间进行比较。如果文本太大,我会将字体大小减小到 12dp(稍后我可能会考虑进一步减小)。

// Note: vh.filmTitleTextView is my TextView, filmText contains the title I want to display
filmTitleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
float textWidth = vh.filmTitleTextView.getPaint().measureText(filmText);
if (textWidth > vh.filmTitleTextView.getWidth()) 
    vh.filmTitleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);

问题是,第一次运行时, vh.filmTitleTextView.getWidth() 始终返回零。我猜这是因为布局之前没有渲染过,大小还不知道。

我不能只使用 ListView 的完整大小,因为 textView 没有相同的宽度(尽管它设置为layout_width =“fill_parent”) - 它周围有一些元素。

有什么想法吗?

I have built a ListView and my items - at least in part - contain titles of various (text) lengths.
In order to enable the user to read as much of the title as possible, I'm trying to change my adapter to auto-pick a feasible font size for my texts.

So I'm working with the TextView's paint object to measure the text in a basline font size (14dp) and try to compare against the available space. If the text is too big, I reduce the font size to 12dp (later I might think about reducing it even further).

// Note: vh.filmTitleTextView is my TextView, filmText contains the title I want to display
filmTitleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
float textWidth = vh.filmTitleTextView.getPaint().measureText(filmText);
if (textWidth > vh.filmTitleTextView.getWidth()) 
    vh.filmTitleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);

The issue is that on first run, vh.filmTitleTextView.getWidth() always returns zero. I guess this is because the layout has not been rendered before and the size is not yet known.

I can't just go with the full size of the ListView because the textView doesn't have the same width (despite the fact that it is set to layout_width="fill_parent") - there are some elements around it.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终陌 2024-11-25 16:53:48

有一个类似的问题很长一段时间都是我的祸根 - 这可能对你有帮助: 自动缩放 TextView 文本以适应边界

Had a similar problem that was my bane for a long time - this might help ya: Auto Scale TextView Text to Fit within Bounds

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文