2016-08-22 10 views
0

Image アンドロイドscrollviewスクロール新しいビューがscrollviewで

を追加したとき、私は途中で任意のビューを追加する場合、通常は追加したビューをスクロール以下のすべてのビューが下振れ。しかし、私は下のビューを邪魔することなく、追加ビューのトップビューを上にスクロールしたい。それはスクロールビューで可能ですか、私を助けてください?図では

、ビュー4を添加した場合には、ビュー2ビュー3

答えて

0

の位置を変更することなく、あなたはおそらく、あなたが追加されているビューの高さを得ることができ、1が上向きにスクロールする必要があるビューで、その後、手動で私はかなりの時間のためにこの質問をしてみてくださいしたいと思ってきたこと、多くのピクセル

scrollView.scrollBy(0, viewAdded.getHeight())

0

を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; 
     } 
    }); 
関連する問題