机器人滚动视图滚动到顶端方向时新视图加入
问题描述:
在滚动视图,如果我在中间添加任何视图,下面通常所有视图的添加的视图滚动下行。但是我想将增加视图的顶部视图向上滚动而不会打扰底部视图。是否有可能在scrollview中,请帮助我?
在图中,如果添加视图4,然后视图必须滚动向上,在不改变的视图和视图的位置3.
答
你或许可以让你添加的视线的高度用然后滚动手动滚动视图,许多像素
scrollView.scrollBy(0, viewAdded.getHeight())
答
我一直想试试这个问题相当长的一段时间,我终于在今天得到了机会。该方法非常简单(事实上,@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;
}
});