Android TextView将文本插入到开始滚动文本视图到最开始

时间:2017-06-18 15:47:28

标签: android textview

我正在尝试显示一本书的页面。为此,我使用单个TextView。当用户向下滚动并到达底部时,我将新文本附加到现有TextView。用户可以继续阅读文本而不受任何阻碍。

我试图在用户向上滚动时执行相同的操作。当用户到达他之前阅读的文本的开头部分时,我试图在开头添加一些文本。

例如,假设我要显示100行文本。我在第一个实例上只显示了20行。因此,当用户打开应用程序时,我显示第41-60行。现在当用户到达第60行时,我将第61-80行添加到屏幕。我这样做,

txt_MyText.append(getResources().getString(R.string.dummy_text1));

现在说如果用户向上滚动并到达第41行,我想显示第21 - 40行。为此,我正在使用这段代码,

txt_MyText.getEditableText().insert(0, getResources().getString(R.string.dummy_text0));

这样可以正常工作,但在添加文本后,TextView会将其位置重置为最开始。我不希望TextView自动滚动到顶部。

我怎样才能做到这一点?

这是我的布局,

<com.abc.book.utils.NesterScrollView
    android:id="@+id/readerScroll"
    xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
                                            android:background="@color/colorWhite"
             >

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:id="@+id/txt_MyText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:textSize="14pt"
        android:textIsSelectable="true"
        android:fadeScrollbars="false"
        android:text="@string/dummy_text"/>

</com.abc.book.utils.NesterScrollView>

同样在代码中,我像这样初始化textView,

txt_MyText.setMovementMethod(new ScrollingMovementMethod());

如何解决我的问题,当我添加文本到最后它不滚动但只有当我添加到开头时。如何在开始时插入文本时阻止滚动?

1 个答案:

答案 0 :(得分:0)

我理解你的代码的方式是每次用户到达时都附加行,但是你不删除旧文本。 这意味着当用户返回上一个“页面”时,您不希望再次插入文本。否则会有重复。 你也插入0,这意味着它将在最开始插入。

您可以做的是跳转到特定的行。我建议尝试类似这样的方法:Scrolling a TextView to a specific line