如何禁用scrollView?

时间:2012-03-02 09:53:42

标签: android scrollview

我已经尝试过了:

 scrollView.setEnable(false);

 scrollView.setOnTouchListener(null);

 scrollView.requestDisallowInterceptTouchEvent(true);

但这些都没有奏效......我无法理解为什么,还有其他办法吗?

xml中的scrollView:

<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>

2 个答案:

答案 0 :(得分:4)

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

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

@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;
}

答案 1 :(得分:3)

没有直接停止滚动视图滚动的方法,但你可以用其他方式来做 像:

scrollview.setOnTouchListener(new OnTouchListener() 
{

  @Override
  public boolean onTouch(View v, MotionEvent event) 
  {

  return !enable;
  }
});

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