2017-06-18 63 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