机器人滚动视图滚动到顶端方向时新视图加入

问题描述:

Image 机器人滚动视图滚动到顶端方向时新视图加入

在滚动视图,如果我在中间添加任何视图,下面通常所有视图的添加的视图滚动下行。但是我想将增加视图的顶部视图向上滚动而不会打扰底部视图。是否有可能在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; 
     } 
    });