私は実装したレイアウトScrollView
に関する多数のビューを含む を持っています。ビューの、展開または折りたたみのいずれかです。したがって、ビューが展開されると、ビューが画面の上に来るようにプログラムで移動したいと思います。下の画像を参照してくださいLinearLayout
expand
collapse
OnClick
ScrollView
ScrollView
赤線の長さまで動かしたいです。child
には(4:ステータス バーの通知) とがScrollView
含まれます。さらに、組み合わせの上または下にビューが含まれる場合と含まれない場合があります。私は CustomScrollView を使用しました。TextView
ImageView
ScrollView
TextView ImageView
scroll 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
それらの違いまでスクロールして、ビューが上に表示されるようにすることです.しかし、それは機能していません.これを達成する方法についてのアイデア.