【问题标题】:Android Multiple Textviews auto adjust one big textAndroid Multiple Textviews 自动调整一个大文本
【发布时间】:2015-02-05 07:16:05
【问题描述】:

我正在开发图书应用程序。让我给你所有的概念

有一个大文本,并且根据文本的长度有多个文本视图。

我必须显示出现在屏幕上的一个文本(大文本的一部分)(无滚动)。如果其他文本对用户不可见,则其他文本应该出现在另一个文本视图(下一页)中。

当我用谷歌搜索时,我找不到一种方法来获取出现在一个文本视图(一页)中的文本长度。所以我可以在另一页中获取其他文本

我附上了一些图片以清晰概念。

请给我建议。 我该怎么办?提前致谢

【问题讨论】:

  • 不同的字体有不同的字形大小,每个字符也不同。如果您计算每个字符中的像素,则必须将它们组合起来屏幕尺寸
  • 您尝试做的事情是可行的,但需要大量计算。
  • 您可以做的另一件事是在一个文本视图中设置特定字符,然后在多个文本视图中划分其余字符。
  • 是的,有很多计算。你有什么计算技巧吗?我一头雾水。该怎么做?
  • 你真正想知道什么?

标签: android text textview flipview


【解决方案1】:

好的,有三种解决方案

  1. 如果您计算屏幕尺寸并使用小中号和大号等尺寸。
  2. 您只需将数据划分并在 textview 中设置。

获取适合屏幕的文本行数,而不是测量文本视图适合多少文本。计算填充 TextView 的文本总量约为。

    private void TextMeasure(String text,
                         TextView tvl, TextView tvr) {
    int linesPerScreen = tvl.getHeight() / (tvl.getLineHeight() + (int) tvl.getLineSpacingExtra());
    Paint paint = tvl.getPaint();
    int textWidth = paint.breakText(text, 0, text.length(),
            true, tvl.getWidth(), null);
    int totalText = textWidth * linesPerScreen;
    String leftText = text.substring(0, totalText);
    String rightText = text.substring(totalText,
            text.length());
    tvl.setText(leftText);
    tvr.setText(rightText);
}

source

可能这个question 可以帮到你。

【讨论】:

  • 这里tvl.getLineSpacingExtra()linesPerScreen总是返回0
  • 当您尝试此操作时,您会发现 tv.getHeight() 此时返回 0。原因是 Activity 的视图尚未布局,因此 TextView 没有高度。如何处理?有几种方法,但最简单的方法是将 Runnable 发布到 TextView 的消息队列。在 TextView 布局完成后会调用 Runnable。
猜你喜欢
  • 2012-06-13
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多