Android:我如何知道textView(我的页面)中可以容纳多少文本?

时间:2011-09-14 10:54:51

标签: android text textview

我想创建一个文本阅读器,它将剪切文本并将其放入TextView(代表我的页面)并一个接一个地放入。它们包含在ViewFlipper中(代表我的整个文本),它允许我翻页。

根据缺点,我不能聪明地剪切我的文字。现在我将每个TextView限制为多个字符,但它非常不稳定。事实上,有些字母占用的空间比其他字母多。我们不能使用这种方法。

我们如何知道文本的数量会进入TextView?

我试图手动查找我的View的最大大小。 我援引:

float test = view.getPaint().measureText(myString);

效果很好。当我输入480个字母(0和1)时,我得到14,400,我的文字完全在屏幕内。用:

1  -> 12.0
0  -> 12.0
é  -> 11.0
\n -> 13.0
\r ->  7.0

总计填写页面 - > 14400

问题在于换行和回车导致问题。

如果我的字符串中只有字母或数字,那么好:如果我们尊重最大尺寸14,400,屏幕上会显示所有内容。没问题!

通过利弊,如果换行或回车,则不起作用。即使我们尊重14400的限制,上面的文字也没有完全显示。

这是因为“MeasureText”方法;“仅为换行符返回13。但奇怪的是,换行符应该至少包含480以使其保持一致。

出版商如何将电子书(Moon Reader,+ Aldiko)的文字格式化得如此之好?每个页面都有相同的高度,文本在同一个地方结束..

2 个答案:

答案 0 :(得分:2)

您可以通过添加TextView来修正android:maxLines="some_integer"中的行数。另一种方式是:

if (myTextView.getMeasuredWidth() < myTextView.getPaint().measureText(myText)) {
    myTextView.setHorizontalFadingEdgeEnabled(true);
    myTextView.setHorizontallyScrolling(true);
}

但如果文字太长,这会在最后一个字符上添加阴影效果。

答案 1 :(得分:0)

在测量宽度或高度之前调用方法:

anyview.measure(0,0);

如果不调用此方法,您0 valueheight

的所有工资都会width