【问题标题】:How to disable a scrollView? [duplicate]如何禁用滚动视图? [复制]
【发布时间】:2012-03-02 09:53:42
【问题描述】:

我已经试过了:

 scrollView.setEnable(false);

 scrollView.setOnTouchListener(null);

 scrollView.requestDisallowInterceptTouchEvent(true);

但是这些都不起作用...我不明白为什么,还有其他方法吗?

xml 中的滚动视图:

<ScrollView
    android:id="@+id/mainPage_scroll"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:focusableInTouchMode="true"
    android:layout_below="@+id/tabBar" >

</ScrollView>

【问题讨论】:

    标签: android scrollview


    【解决方案1】:

    为了将来参考,我用于“ScrollView 内的可绘制区域”的更简单的解决方案是使用 requestDisallowInterceptTouchEvent 告诉父级和上级链不要干扰触摸操作。

    例如在可绘制视图上,在这种情况下,父级是ScrollView 内的LinearLayout,但也可以嵌套在其他组件中:

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        if (event.getAction() == MotionEvent.ACTION_DOWN)
        {
            this.parent.requestDisallowInterceptTouchEvent(true);
            // etc...
        }
        else if(event.getAction() == MotionEvent.ACTION_MOVE)
        {
            // etc...
        }
        else if (event.getAction() == MotionEvent.ACTION_UP)
        {
            this.parent.requestDisallowInterceptTouchEvent(false);
            // etc...
        }
        return true;
    }
    

    【讨论】:

    • 我一直在到处寻找这样的评论,谢谢。
    【解决方案2】:

    没有直接的方法来停止滚动视图滚动,但你可以用其他方式做到这一点 喜欢:

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

    当您将 enable 变量设置为 true 时,它​​将开始滚动,当您将其设置为 false 时,它​​将停止滚动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多