アンドロイドscrollviewスクロール新しいビューがscrollviewで
を追加したとき、私は途中で任意のビューを追加する場合、通常は追加したビューをスクロール以下のすべてのビューが下振れ。しかし、私は下のビューを邪魔することなく、追加ビューのトップビューを上にスクロールしたい。それはスクロールビューで可能ですか、私を助けてください?図では
、ビュー4を添加した場合には、ビュー2ビュー3
アンドロイドscrollviewスクロール新しいビューがscrollviewで
を追加したとき、私は途中で任意のビューを追加する場合、通常は追加したビューをスクロール以下のすべてのビューが下振れ。しかし、私は下のビューを邪魔することなく、追加ビューのトップビューを上にスクロールしたい。それはスクロールビューで可能ですか、私を助けてください?図では
、ビュー4を添加した場合には、ビュー2ビュー3
の位置を変更することなく、あなたはおそらく、あなたが追加されているビューの高さを得ることができ、1が上向きにスクロールする必要があるビューで、その後、手動で私はかなりの時間のためにこの質問をしてみてくださいしたいと思ってきたこと、多くのピクセル
scrollView.scrollBy(0, viewAdded.getHeight())
をscrollviewをスクロールし、私は最終的に今日のチャンスを得ました。この方法はかなりシンプルです(実際に@dweeboは以前にすでに言及しています)。ビューを追加するときにScrollView
を上に移動します。追加時に正確な(有効な)ディメンションを取得するには、ViewTreeObserver
を使用します。ヒントを得ることのできるコードは次のとおりです。
// Getting reference to ScrollView
final ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView);
// Assuming a LinearLayout container within ScrollView
final LinearLayout parent = (LinearLayout) findViewById(R.id.parent);
// The child we are adding
final View view = new View(ScaleActivity.this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 100);
view.setLayoutParams(params);
// Finally, adding the child
parent.addView(view, 2); // at index 2
// This is what we need for the dimensions when adding
ViewTreeObserver viewTreeObserver = parent.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
parent.getViewTreeObserver().removeOnPreDrawListener(this);
scrollView.scrollBy(0, view.getHeight());
// For smooth scrolling, run below line instead
// scrollView.smoothScrollBy(0, view.getHeight())
return false;
}
});