2011-12-16 17 views
1

私はボタンとvisibility = "gone"のtextViewを含むレイアウトを持っています。このレイアウトはscrollViewの子です。ボタンが押されると、textViewの可視性は "visible"に設定されますが、画面がオーバーフローします(これがscrollViewにある理由です)。androidのビューをリフレッシュする方法

私の問題は、自動的にページの最後までスクロールしたいということです。

だから私は試してみた:

mySchrollView.fullScroll(View.FOCUS_DOWN); 
をしかし残念ながら、それは動作しません。 onClickメソッドの終了後にレイアウトが更新されるようです(実際に、このメソッドをもう一度呼び出すと(新しいクリック)、動作しています)。

したがって、fullScroll(...)を呼び出す前にレイアウトや画面を更新する必要があります。私はrefreshDrawableState()またはforceLayout()を試しましたが、どちらもうまくいきませんでした。

解決方法はありますか?

どうもありがとう

+0

http://developer.android.com/reference/android/view/View.html#invalidate() – logcat

答えて

2

はあなたが行うことができます:既に予定されている他のすべて(例えばレイアウト)があるとき

yourText.setVisibility(View.VISIBLE); 
schrollView.post(new Runnable{ 
    @Override 
    public void run(){ 
     schrollView.fullScroll(View.FOCUS_DOWN); 
    } 
} 

とfullScroll()が処理されます完了しました。
何らかの理由でこれが機能しない場合は、postDelayed(runnable, 100);(上記の例と同じ実行可能ファイルを使用)を使用すると、ビューは100ミリ秒後にスクロールします。

+0

ありがとう。できます! – obrien

1

は、あなたが "schrollView.requestLayout()" または "schrollView.invalidateを()" を呼び出すみましたrequestLayout()

+0

はい..でも動作しません – obrien

+0

あなたのinerレイアウトでも試してみてください –

+0

あなたは使用する必要があります最初に無効にしてください – kobbycoder

0

を試してみましたか? (ところでそれが「scrollView」と呼ばれるべきではありません。?)

+0

はい、私はそれらを試してもうまくいきません:(もちろん。私は既にそれを固定している名前についてはもちろんです:) – obrien

0

メソッドschrollView.smoothScrollTo(x、y)を使用できます。 だから、あなたのケースでは、コードは次のようになります。

schrollView.smoothScrollTo(0, deviceHeight); 
0

API 11以降で使用可能であるrecreate()を使用してみました?

関連する問題