2011-12-27 41 views
0

アンドロイドのscrollViewでは、スクロールビューで最も低い位置を見つけるために、scrollTo(x,y)メソッドを使用して右下にスクロールできます。 実際の数値が必要です。 getHeight()メソッドを使用しても正しい値が返されることはありません。スクロールバーが最後までスクロールし、時には到達しないことがあります。スクロールビューにはテキストビュー付きの線図レイアウトがあります。私が紛失しているものがなければならないのですか?ScrollViewの一番下のスクロール可能な位置はどうやって見つかりますか?

答えて

1

感謝を。誰かが興味があれば、素早くハックを見つけました。

sView.fullScroll(View.FOCUS_DOWN); 
sView.fullScroll(View.FOCUS_DOWN); 
y = sView.getScrollY(); 
sView.fullScroll(View.FOCUS_UP); 

これは、再度ジャンプアップ、Yを収集し、ダウンスクロールの下にジャンプします。それは目に見えないほど速く起こり、毎回yの底値を得るでしょう。フォーカスを2回呼び出す必要があります。そうでなければ、yは0を返します。

1

最後までスクロールしたい場合は、fullScroll(ScrollView.FOCUS_DOWN)を使用するだけで済みます。スクロールビューの高さに基づいて特に数値が必要な場合は、スクロールビューをサブクラス化してonSizeChangedをオーバーライドする必要があります。これにより、実際の数値の高さが示されます。 onSizeChangedはonResumeの後にだけ呼び出され、アクティビティが再開するたびに呼び出されるとは限りません。

あなたはたまにスクロールして終了することがあり、時には競合状態ではないことがある理由の一部です。時には、スクロールが起こって、他の重要な事柄(ビューの作成など)が起こる前に、何もしないように見えることがあります。

は、あなたのスクロールビューのハンドラに、あなたの呼び出しを投稿してみてください。

yourScrollView.post(new Runnable(){ 
    @Override 
    public void run(){ 
    yourScrollView.fullScroll(ScrollView.FOCUS_DOWN); 
    } 
}; 

時には短い遅延を追加することができます:応答のための

yourScrollView.postDelayed(new Runnable(){ 
    @Override 
    public void run(){ 
    yourScrollView.fullScroll(ScrollView.FOCUS_DOWN); 
    } 
}, 200); 
関連する問題