【问题标题】:Android: How do I know how many text can fit in my textView (my page)?Android:我如何知道我的 textView(我的页面)中可以容纳多少文本?
【发布时间】:2011-11-16 22:16:10
【问题描述】:

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

由于缺点,我不能智能地剪切我的文本。现在我将每个 TextView 限制为多个字符,但它非常不稳定。确实有些字母比其他字母占用更多空间..我们不能使用这种方法。

我们如何知道有多少文本会进入 TextView?

我试图手动找到我的视图的最大尺寸。 我调用了:

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)的文本格式化得这么好?每个页面都有相同的高度,文本在相同的地方结束..

【问题讨论】:

    标签: android text textview


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢你,但我不能使用你的代码。 “getMeasuredWidth”似乎不合适。她每次都返回 0。谢谢你的“myTextView.getPaint().MeasureText(myText)”正是我需要的。现在我只需要一个方法来确定我的视图的最大容量。 “getMeasuredWidth”不返回任何内容。
    • 确实如此,但最奇怪的是这段代码总是可以正常工作!
    • 您是否尝试在活动的 onCreate 上执行此操作?
    • 你的 textView 的宽度是否设置为 wrap_content?
    【解决方案2】:

    在获取测量宽度或高度之前调用以下方法:

    anyview.measure(0,0);
    

    如果不调用此方法,您将获得0 valueheightwidth 的工资

    【讨论】:

    • 并查看您需要的高度和宽度必须从 XML 或通过代码贫乏地膨胀。
    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多