つまり、次のような 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.");
最後の行まで自動的にスクロールします。これらはすべて、あなたのニーズを満たす魔法です。