我有ScrollView
,其中包含LinearLayout
的众多观看次数。我已实施expand
和collapse
布局。 OnClick
视图,它会展开或折叠。所以当视图展开时,我想以编程方式移动ScrollView
,使视图位于屏幕顶部。请参见下面的图片
我想将ScrollView
移动到红线所示的长度。 child
的{{1}}包含ScrollView
(4:状态栏通知)和TextView
。ImageView
可能包含或不包含ScrollView
之上或之下的观看次数{1}}组合。我使用了CustomScrollView,在那里我找到了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);
}
}
的{{1}}位置之间的差异,并用屏幕高度减去它并将y
滚动到那些差异,以便视图显示在顶部。但它不起作用。关于如何实现这一点的任何想法。
答案 0 :(得分:0)
我刚刚发现我做错了什么。每个屏幕都包含StatusBar
,在我的情况下包含ActionBar
。因此,当我计算View Y
位置时,我是从屏幕顶部开始计算的,每当我使用{{{}的增量值时1}},我正在将我的视图移动到屏幕顶部。所以实际的解决方案是
ScrollView Scroll
通过这样做,我的视图自动到达屏幕顶部