2012-04-26 20 views
0

私のアプリケーションには3つのコンポーネントがあり、上部には1つのtextview(inputType:textMultiline、scrollbar:vertical、gravity:bottom | right)、中央に1つのeditview、下に1つのボタンがあります。私の編集ビューに何かを入力してボタンをクリックすると、編集ビューに書かれたテキストがテキストビューに表示されます。私が大丈夫になるたびに、テキストには下が表示され、表示されるのは最初の3つの入力です。私は私の最後の入力を見ることができるのtextviewを下にスクロールする必要があります。テキストビューの自動スクロール

ここでは、ユーザーがテキストビューで最後に入力したものを見せたいと思っています。私はそれに新しいテキストを入力するたびに、textviewsのための自動スクロールダウンのためのそのようなコードがあるかどうかを知りたい。私はアンドロイドアプリを開発する上で新しいです。ありがとう!

+0

似たような質問があります:http://stackoverflow.com/questions/3506696/auto-scrolling-textview-in-android-to-bring-text-into-view – jrajav

答えて

1

もこれを試してみてください私はすでにこれに答えました!私にいくつか考えてくれてありがとう。私は将来彼らを使うことができるかもしれません。 @バラットシャルマ、あなたはほとんど答えを得た!ありがとう!

public void onClick(View v) { 
      // TODO Auto-generated method stub 
      log.setText(log.getText() + "\n" +input.getText()); 

      if(log.getLineCount() > 5){ 
       scroll_amount = scroll_amount + log.getLineHeight(); 
       log.scrollTo(0, scroll_amount); 
      } 
     } 

私はonCreate()の外で可変スクロール量を呼び出しました。再度、感謝します!

1

scrollView.scrollTo(x、y)を使用して、目的の位置に自動スクロールできます。

/* 編集 */

以下のようにレイアウトXMLでこのカスタムクラス使用scrollview

package com.android.mypackage 
public class myScrollView extends ScrollView{ 
    private int maxY = 0; 
    @Override 
    protected void onScrollChanged(int x, int y, int oldx, int oldy) { 
     super.onScrollChanged(x, y, oldx, oldy); 
     if(y>maxY) 
     maxY=y; 
    } 
    public void moveToEnd(){ 
     this.scrollTo(0, maxY); 
    } 
} 

のためのカスタムクラスを作成します。

... 
<com.android.mypackage.myScrollView 
    android:id="@+id/my_scrollview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView .../> 
</com.android.mypackage.myScrollView> 
..... 

[OK]を押しますボタンは関数myscrollViewObj.movetoEnd()を呼び出します。 これは単なるドラフトコードであり、まだテストされていません。

+0

私の価値は何ですか? – ron

+0

onScrollChangedをオーバーライドして、必要なy値がわかるようにデバッグする必要があります。 – MichaelP

+0

いいえ、onScrollChangedについて調べてみてください。ありがとうございました! :D – ron

5

テキストをtextviewに設定すると、foucusに設定されます。あなたがTextViewの上のあなたの文字列を変更するたび

tv.setFocusable(true); 

のようにそれは自動的にあなたの視野を集中します。

あなたは何度も何度もあなたのテキストビューにテキストを追加する場合は、あなたが

はそれがわからない働くことを願っています。この

int scroll_amount = tv.getBottom(); 
    tv.scrollTo(0, scroll_amount); 
を試すことができますが...

int scroll_amount = (int) (tv.getLineCount() * tv.getLineHeight()) - (tv.getBottom() - tv.getTop()); 
    tv.scrollTo(0, scroll_amount); 
+0

しかし、テキストビューにテキストを入力するたびに、テキストは前に入力したテキストの下に移動します。私のtextviewは150dpしかないので、3〜4行のテキストの後には、私が入力した次の行を見ることはできません。私が最初にスクロールダウンしてから、私が入力したテキストを見る必要があります。 – ron

+0

あなたが使用している単一のテキストビュー... –

+0

それはどういう意味ですか? – ron