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

时间:2011-07-07 14:43:27

标签: android listview paint

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

所以我正在使用TextView的绘图对象来测量基线字体大小(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”) - 它周围有一些元素。 / p>

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这个问题长期以来一直是我的祸根 - 这可能有助于你:Auto Scale TextView Text to Fit within Bounds