我正在尝试显示一本书的页面。为此,我使用单个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());
如何解决我的问题,当我添加文本到最后它不滚动但只有当我添加到开头时。如何在开始时插入文本时阻止滚动?
答案 0 :(得分:0)
我理解你的代码的方式是每次用户到达时都附加行,但是你不删除旧文本。 这意味着当用户返回上一个“页面”时,您不希望再次插入文本。否则会有重复。 你也插入0,这意味着它将在最开始插入。
您可以做的是跳转到特定的行。我建议尝试类似这样的方法:Scrolling a TextView to a specific line