テキストの行を追加したときに TextView を自動的にスクロールさせるにはどうすればよいですか? 質問する

テキストの行を追加したときに TextView を自動的にスクロールさせるにはどうすればよいですか? 質問する

つまり、次のような TextView があります:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="140.7dp"
    android:id="@+id/terminalOutput"
    android:layout_marginBottom="0.0dp"
    android:scrollbars="vertical"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:maxLines="8" />

私はこれを一種の実行ログとして使用し、ユーザーが約 3 分かかるタスクの進行状況を監視できるように表示します。ただし、8 行を超えると、テキストが画面外になってしまいます。これはユーザーにとって直感的ではありません。なぜなら、スクロールダウンして手動でポーリングする以外に、テキストが画面外になったことを知る方法がないためです。

この TextView にテキストを追加するたびに、テキストが可能な限り下にスクロールされるようにするにはどうすればよいですか?

また、これはXamarin Androidですが、関係ないと思います。Javaとの間で簡単に変換できます。

ベストアンサー1

コードから、次の 2 つの手順を実行する必要があります。

ステップ1

Xamarin Androidでコーディングしますが、xxxActivity.javaのJavaと同様にターミナル出力呼び出しは次のようにする必要があります

TextView outputText = (TextView) findViewById(R.id.terminalOutput);
outputText.setMovementMethod(new ScrollingMovementMethod());

パラメータ ScrollingMovementMethod() によるメソッド setMovementMethod() がギミックです。

ステップ2

また、Java-Androidのレイアウトでは、上記のTextView宣言のactivity_xxx.xmlにもこれを追加する必要があります。

android:gravity="bottom"

次のように outputText に新しい行を追加します。

outputText.append("\n"+"New text line.");

最後の行まで自動的にスクロールします。これらはすべて、あなたのニーズを満たす魔法です。

おすすめ記事