2017-06-18 76 views
0

我正在尝试显示书籍的页面。为此,我使用单个TextView。当用户向下滚动并到达底部时,我将新文本添加到现有的TextView中。用户可以继续阅读文本而没有任何障碍。Android 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,这意味着它将在最开始插入。

你可以做的是跳到一个特定的行。我建议尝试一种类似于此的方法:Scrolling a TextView to a specific line