【问题标题】:Android: Preventing scrollview from scrolling automatically when hiding/showing views within itAndroid:在其中隐藏/显示视图时防止滚动视图自动滚动
【发布时间】:2015-06-03 21:00:56
【问题描述】:

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

在滚动视图中,我为一个特定项目设置了这种布局

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

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

我正在像这样为视图设置动画:

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

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

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

我尝试了两件事:

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

  3. 我想到了这个想法,但我不知道如何实现:保持上视图(框架布局)不变并移动下视图以填充空间,以便垂直scrollY 值保持不变。

有什么方法可以实现吗? 如果没有,还有其他方法可以实现吗?

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

【问题讨论】:

    标签: android android-scrollview


    【解决方案1】:

    试试这个:

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

    如果 yourView 已经有一个 onTouchListener,让它在任何情况下都返回 true。

    【讨论】:

    • 在这种情况下 yourView 是什么?
    • @Skynet,youView 是您正在制作动画的可滚动布局内的任何视图(在 FrameLayoyt 内的问题中)。
    • 谢谢,我试试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多