如何禁用和启用滚动android ScrollView?

我是一个android开发人员。我也想使用一个ScrollView.This ScrollView需要一些时间禁用滚动和一些时间启用滚动。但我不能禁用滚动。如何执行它。请帮助我。也尝试使用一些代码如

fullparentscrolling.setHorizontalFadingEdgeEnabled(false); fullparentscrolling.setVerticalFadingEdgeEnabled(false); 

要么

  fullparentscrolling.setEnabled(false); 

但它不起作用。

Solutions Collecting From Web of "如何禁用和启用滚动android ScrollView?"

试试这个方法

像这样创build您的CustomScrollview

 import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ScrollView; public class CustomScrollView extends ScrollView { private boolean enableScrolling = true; public boolean isEnableScrolling() { return enableScrolling; } public void setEnableScrolling(boolean enableScrolling) { this.enableScrolling = enableScrolling; } public CustomScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public CustomScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomScrollView(Context context) { super(context); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (isEnableScrolling()) { return super.onInterceptTouchEvent(ev); } else { return false; } } @Override public boolean onTouchEvent(MotionEvent ev) { if (isEnableScrolling()) { return super.onTouchEvent(ev); } else { return false; } } } 

在你的xml中

//“com.example.demo”replace为你的包名

 <com.example.demo.CustomScrollView android:id="@+id/myScroll" android:layout_width="match_parent" android:layout_height="wrap_content" > </com.example.demo.CustomScrollView> 

在你的活动

 CustomScrollView myScrollView = (CustomScrollView) findViewById(R.id.myScroll); myScrollView.setEnableScrolling(false); // disable scrolling myScrollView.setEnableScrolling(true); // enable scrolling 

我设置了滚动视图的on touch监听器,并在onTouch方法中reture和true。 这对我来说是诀窍。

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

最好的

您不能禁用ScrollView的滚动。 您需要扩展到ScrollView,并重写onTouchEvent方法,以便在匹配条件时返回false。

您可以按如下所示修改ScrollView以禁用滚动

 class LockableScrollView extends ScrollView { ... // true if we can scroll (not locked) // false if we cannot scroll (locked) private boolean mScrollable = true; public void setScrollingEnabled(boolean enabled) { mScrollable = enabled; } public boolean isScrollable() { return mScrollable; } @Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: // if we can scroll pass the event to the superclass if (mScrollable) return super.onTouchEvent(ev); // only continue to handle the touch event if scrolling enabled return mScrollable; // mScrollable is always false at this point default: return super.onTouchEvent(ev); } } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // Don't do anything with intercepted touch events if // we are not scrollable if (!mScrollable) return false; else return super.onInterceptTouchEvent(ev); } } 

进一步参考这里也是堆栈溢出的完整解决scheme! 以编程方式禁用ScrollView?

将此标记为对其他人的帮助..谢谢

试试这个,这将禁用滚动function。

 scrollview.setEnabled(false);