У меня есть ScrollView
, который содержит многочисленные виды на LinearLayout
. Я внедрил и collapse
раскладки. OnClick
зрения, это либо расширить или collapse.So, когда вид расширяется, я хочу программно перемещать ScrollView
таким образом, что точка зрения приходит на верхней части изображения screen.See нижеAndroid, как перемещать scrollview ребенка вверх программно
Я хочу, чтобы переместить ScrollView
до длины, указанной на красной линии. В child
от ScrollView
содержится TextView
(4: Уведомление о состоянии) и ImageView
. Дополнительно ScrollView
может содержать или не содержать изображения, расположенные выше или ниже комбинации TextView ImageView
. Я использовал CustomScrollView где я Findout 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
до такой разницы, так что вид отображается сверху. Но он не работает. Любая идея о том, как этого достичь.