Android:在隐藏/显示其中的视图时,防止滚动视图自动滚动

时间:2015-06-03 21:00:56

标签: android android-scrollview

我的布局中有一个滚动视图,有很多视图。

在scrollview中,我有一个特定项目的布局

<scrollview>
...
<FrameLayout>
  <View1/>
  <View2 hidden/>
</FrameLayout>
...
</scrollview>

____________  ____________
|          |  |          |
|          |  |  View 2  | 
|  View 1  |  |          |
|          |  |          |
|          |  ------------
------------  

我正在为这样的观点制作动画:

  • 执行某些操作:将视图View1滑出,View2滑入(隐藏view1)
  • 关于其他一些操作:将视图View2滑出,View1滑入(隐藏view2)

我的问题是:在执行这些操作时,滚动视图会自动滚动(看起来不太好)。

原因可能是:改变视图的可见性。

我尝试了两件事:

  1. 禁用垂直滚动但没有帮助
  2. 记住onAnimationStart中的scrollY并在onAnimationEnd中恢复此滚动位置 - 这种方法的问题是,它清晰可见滚动视图移动了(虽然它移动得非常快)。

  3. 我想到了这个想法,但我不知道如何实现这个:保持上部视图(与framelayout一样)并移动下部视图以填充空间,所以垂直scrollY值保持不变。

  4. 有没有办法实现这个? 如果没有,还有其他方法可以达到这个目的吗?

    有没有办法部分重绘滚动视图?

1 个答案:

答案 0 :(得分:2)

试试这个:

yourView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return true;
    }
});

如果你的View已经有一个onTouchListener,那么无论如何都要让它返回true。

相关问题