私は実装したレイアウトScrollViewに関する多数のビューを含む を持っています。ビューの、展開または折りたたみのいずれかです。したがって、ビューが展開されると、ビューが画面の上に来るようにプログラムで移動したいと思います。下の画像を参照してくださいLinearLayoutexpandcollapseOnClickScrollView
ScrollView赤線の長さまで動かしたいです。childには(4:ステータス バーの通知) とがScrollView含まれます。さらに、組み合わせの上または下にビューが含まれる場合と含まれない場合があります。私は CustomScrollView を使用しました。TextViewImageViewScrollViewTextView ImageViewscroll Y
public int newY=0;
@Override
protected void onScrollChanged(int X, int Y, int oldX, int oldY) {
super.onScrollChanged(X, Y, oldX, oldY);
this.newY=Y;
}
そのために、次のロジックを使用しました
public void translateView(View view){
int[] xy =new int[2];
//view = ImageView
view.getLocationOnScreen(xy);
int scrollY = xy[1]+view.getBottom();
//screenHeight =ScreenHeight of the phone
if(scrollY>screenHeight){
//heading textView
textView.getLocationOnScreen(xy);
int diff = screenHeight-xy[1];
diff =Math.abs(diff);
int moveHeight = (int) (scrollView.newY+diff);
scrollView.smoothScrollTo(0, moveHeight);
}
}
yしたがって、基本的に私がやろうとしているのは、位置の違いを見つけてTextView、画面の高さでそれを減算し、ScrollViewそれらの違いまでスクロールして、ビューが上に表示されるようにすることです.しかし、それは機能していません.これを達成する方法についてのアイデア.