Android:如何确定TextView中最后一个完全可见的字母?

时间:2017-06-20 06:24:04

标签: android string view textview spannablestring

我正在努力建立一个图书阅读器。现在我有一个很长的文本填满了整个屏幕,甚至一些文本都在屏幕外。我想知道如何找到屏幕上完全可见的最后一个字母,以便我可以将文本拆分成页面。

例如,

之前的所有行
  “坏消息,弗农,”她说......

是完全可见的文字,其余文字必须移至另一页。

enter image description here

像这样(另一页文字以“坏消息”开头)

enter image description here

以下是我在上面的例子中使用的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="...some text..." />
</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

我认为,除非您使用等宽字体,否则预测文本将要结束的位置将是困难/不可能的。信使。但是我没有采用这种方法,而是可以建议的另一种方法是简单地为图书阅读器的每个页面提供一定数量的字符。是的,这意味着使用非等宽字体您将不知道要渲染的确切行数。但是,占用的线数应该在相当紧的范围内,并且很可能不会被用户察觉。

您可以在此处使用ScrollView,其中包含保存每个页面文本的实际TextView。这是一个可能的样子的骨架:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="...some text..." />
    </ScrollView>
</RelativeLayout>

使用ScrollView,用户可以简单地向上和向下拖动以捕捉可能不适合单个屏幕的任何内容。同样,这使您不必担心提供确切数量的内容。