我有一个ScrollView
包含许多关于LinearLayout
.I 的视图的视图。我已经实现expand
和collapse
布局。OnClick
视图,它要么展开要么折叠。所以当视图展开时,我想以编程方式移动ScrollView
,使视图出现在屏幕顶部。见下图
我想将 移动ScrollView
到红线所示的长度。child
ofScrollView
包含一个TextView
(4:状态栏通知)和一个ImageView
.FurtherScrollView
可能包含也可能不包含组合上方或下方的视图TextView ImageView
。我使用了一个 CustomScrollView 我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
到这些差异,以便视图显示在顶部。但它不起作用。关于如何实现这一点的任何想法.