Android如何以编程方式将scrollview子项移到顶部

时间:2013-03-18 10:34:28

标签: android

我有ScrollView,其中包含LinearLayout的众多观看次数。我已实施expandcollapse布局。 OnClick视图,它会展开或折叠。所以当视图展开时,我想以编程方式移动ScrollView,使视图位于屏幕顶部。请参见下面的图片

enter image description here

我想将ScrollView移动到红线所示的长度。 child的{​​{1}}包含ScrollView(4:状态栏通知)和TextViewImageView可能包含或不包含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滚动到那些差异,以便视图显示在顶部。但它不起作用。关于如何实现这一点的任何想法。

1 个答案:

答案 0 :(得分:0)

我刚刚发现我做错了什么。每个屏幕都包含StatusBar,在我的情况下包含ActionBar。因此,当我计算View Y位置时,我是从屏幕顶部开始计算的,每当我使用{{{}的增量值时1}},我正在将我的视图移动到屏幕顶部。所以实际的解决方案是

ScrollView Scroll

通过这样做,我的视图自动到达屏幕顶部