2017-06-18 3 views
0

私は本のページを表示しようとしています。このために、私は単一のTextViewを使用しています。ユーザーがスクロールして下に達すると、既存のTextViewに新しいテキストを追加します。ユーザは何ら支障なくテキストを読み続けることができる。Android TextViewはテキストを最初に挿入します。テキストビューを最初からスクロールします

私はユーザーがスクロールアップしている間も同じことをしようとしています。ユーザーが先に読んだテキストの開始部分に達すると、最初にテキストを追加しようとしています。

例えば、100行のテキストを表示するとします。最初のインスタンスでは20行しか表示していません。だから、ユーザがアプリを開いたとき、私は41〜60行目を表示しました。ユーザが60行目に達すると、61〜80行目が画面に追加されます。 I今、ユーザーがスクロールした場合、最大言うと、ライン41に到達し、

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

をこの行を使用して、私はライン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> 

コード内で、私は、私の問題を解決する方法

txt_MyText.setMovementMethod(new ScrollingMovementMethod()); 

、このようのTextViewを初期化し、私が最後にテキストを追加するとき、それはスクロールしていません私が最初に追加するときだけです。テキストが最初に挿入されたときのスクロールを防ぐには?

答えて

0

あなたのコードを理解する方法は、ユーザーが終わりに達するたびに行を追加することですが、古いテキストは削除しないでください。 これは、ユーザーが以前の「ページ」に戻るときにテキストを再度挿入したくないことを意味します。そうでなければ重複があります。 0にも挿入されています。つまり、最初に挿入されます。

あなたができることは、特定の行にジャンプすることです。私はこのようなアプローチを試みることをお勧めします:Scrolling a TextView to a specific line

関連する問題