我已经构建了一个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>
有什么想法吗?