我正在尝试制作缩放内容以使其全部显示,无裁剪,多行或省略号的textview。动态缩放文本以确保它适合单行文本视图
我会快速浏览布局,以便将其放入上下文中。
*有一个gridview有几个行和列。 *为GridView项都受到它返回一个适配器(伪标记:))提供: -
<LinearLayout Orientation=vertical>
<MyCustomTextview name='titletext' Not multiline />
<MyCustomTextview name='itemtext' Not multiline />
</LinearLayout>
我试过中重写onSizeChanged因为这是几个谷歌搜索结果指向了我,我开始与: -
...
if (this.getLinecount() > 1)
{
this.setTextSize(... currentsize -10);
}
...
,这给了我非常小的文本那里将出现在多行,所以我知道我可以调整大小,看看TextView的正确有一个以上的线。
所以我进展到: -
while (this.getLinecount() > 1)
{
this.setTextSize(... currentsize - 1);
}
我预计运行,直到文本是足够小,但调用setTextSize getLineCount()返回0,我相信这是因为它需要重新计算后文本大小,所以我尝试refreshLayout(),forceLayout()和invalidate()的各种组合无济于事。
我有一个想法也许是一个更好的办法,但我不知道这是否是很容易达到的: -
它达产后将GridView通过适配器,所以我会执行我的代码onSizeChanged被称为在那里,但是有以下可能和如何: -
- TextView设置为填充父母的宽度,我可以准确地告诉文字的可用空间的宽度的像素大小? (我相信可能会有填充等应用)
- 然后,我打算使用measureText(String)来查看文本是否合适,如果不减小大小并再次检查。
我相信这将是一个很好的解决方案,但我不确定如何准确测量可用空间,以及如果我选择的活动最好。
任何援助将不胜感激。
- 安东尼
检查这一点 - http://stackoverflow.com/questions/7259016/scale-text-in-a-view-to-fit/7259136#7259136 – Ronnie 2014-03-19 12:16:33