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

118*_*218 9 android text textview

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

通过利弊我不能聪明地削减我的文字.现在我将每个TextView限制为多个字符,但它非常不稳定.事实上,有些字母占用的空间比其他字母多.我们不能使用这种方法.

我们如何才能知道TextView中输入的文本数量是多少?

我试图手动找到我的View的最大大小.我援引:

float test = view.getPaint().measureText(myString);
Run Code Online (Sandbox Code Playgroud)

它运作良好.当我输入480个字母(0和1)时,我得到14,400,我的文字完全在屏幕内.附:

1  -> 12.0
0  -> 12.0
é  -> 11.0
\n -> 13.0
\r ->  7.0
Run Code Online (Sandbox Code Playgroud)

总计填写页面 - > 14400

问题是换行和回车导致问题.

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

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

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

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

sup*_*erM 2

TextView您可以通过添加来固定行数android:maxLines="some_integer"。另一种方法是这样的:

if (myTextView.getMeasuredWidth() < myTextView.getPaint().measureText(myText)) {
    myTextView.setHorizontalFadingEdgeEnabled(true);
    myTextView.setHorizontallyScrolling(true);
}
Run Code Online (Sandbox Code Playgroud)

但如果文本太长,这会给最后一个字符添加模糊效果。