我有一个ScrollView包含许多关于LinearLayout.I 的视图的视图。我已经实现expand和collapse布局。OnClick视图,它要么展开要么折叠。所以当视图展开时,我想以编程方式移动ScrollView,使视图出现在屏幕顶部。见下图
我想将 移动ScrollView到红线所示的长度。childofScrollView包含一个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到这些差异,以便视图显示在顶部。但它不起作用。关于如何实现这一点的任何想法.