ScrollView 设置滚动是否可用

extends:http://stackoverflow.com/questions/5763304/disable-scrollview-programmatically , http://stackoverflow.com/questions/18893198/how-to-disable-and-enable-the-scrolling-on-android-scrollview

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class LockableScrollView extends ScrollView {

    // true if we can scroll (not locked)
    // false if we cannot scroll (locked)
    private boolean mScrollable = true;

    public LockableScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public LockableScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LockableScrollView(Context context) {
        super(context);
    }

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

}
// "com.example.demo" replace with your packagename

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

CustomScrollView myScrollView = (CustomScrollView) findViewById(R.id.myScroll);
        myScrollView.setEnableScrolling(false); // disable scrolling
        myScrollView.setEnableScrolling(true); // enable scrolling
时间: 2024-10-08 18:11:36

ScrollView 设置滚动是否可用的相关文章

微信小程序-scroll-view横向滚动和上拉加载

今天介绍微信小程序中scroll-view实现横向滚动和上拉加载的实现及需要注意的地方. 先看最终效果. 横向滚动 1.设置滚动项display:inline-block; 2.设置滚动视图容器white-space: nowrap; 3.滚动项不要用float 为什么会有以上三点要求呢? 其实横向滚动官方文档中是没有做太多说明的,只说明需要定义scroll-view滚动方向scroll-x=true允许横向滚动,但是我在实践的时候我发现,你要横向滚动,首先你得是一排吧.所以才发现需要定义滚动项

关于ScrollView无法滚动的解决方案

今天做了一个ScrollView的小例子(我的环境Xcode5 IOS7),结果发现无法滚动,即使设置了scrollView的contentSize还是不行,于是研究了一番,最终找到了解决方案: 在ios6之前,因为Xcode没有Autolayout的机制,所以直接使用scrollView,设置它的contentSize即可正常滚动 在ios6之后,因为Xcode引入了Autolayout的机制,所以我们设置的contentSize被修改为适合屏幕大小的值,也就是说自适应啦,因此无法滚动,解决方

触摸点为scrollview上的子控件时,scrollview不能滚动(iOS8)

现象:在iOS8上,scrollview上面布局了多行多列的button,滑动scrollview,如果当触摸点是在按钮上,scrollview不能滚动. 例如: 解决方法:设置scrollview的panGestureRecognizer.delaysTouchesBegan为YES, scrollView.panGestureRecognizer.delaysTouchesBegan=YES; 关于这个问题,应该是和触摸事件的传递有关,继承自scrollview定tableview也会有这样

完美解决EditText和ScrollView的滚动冲突(上)

在网上搜了一下EditText和ScrollView的滚动冲突,发现差点儿全部的解决方式都是触摸EditText的时候就将事件交由EditText处理,否则才将事件交由ScrollView处理.这样确实初步攻克了两者之间的滚动冲突,但并非最好的解决方式.比方,EditText本来能够显示6行文本,可是眼下仅仅显示了5行文本,此时我们在EditText区域进行滑动并期望整个页面能够滚动,但因为我们将事件交给了EditText进行处理,所以页面并不能滚动,这种体验是极差的.事实上我们更希望当Edit

封装scrollView 循环滚动,tableViewCell(连载) mvc

封装 封装 封装 ... 封装的重要性太重要了 给大家在送点干货 从一个项目中抽取出来的,和大家一起分享 封装scrollView 循环滚动,tableViewCell(连载) 明天还会更新 tableView 的封装 使用了mvc 设计模式 代码如下: // // GPMainController.m #import "GPMainController.h" #import "GPAdsView.h" #import "GPSubViewCell.h&q

设置按钮不可用避免重复提交

 设置按钮不可用,避免重复提交 编写人:CC阿爸 2015-1-29 今天在这里,我想与大家一起分享如何处理项目中经常出现用户重复提交的情况,为了防止这种情况,最常用的方法就是在用户点击按钮后将该按钮设为不可用,笔者在实际开发当中遇到了多种不同的情况,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 由于刚开始进行的web开发,很多时候使用的为html控件,因此处理起来相当简单 如:先前开发的报销系统,在提交单据审批时,时常会出现重复审批下一流程的bug. Aspx前

点击按钮之后将其设置为不可用状态

点击按钮之后将其设置为不可用状态:不少效果中,希望按钮只能够被点击一次,再点击之后就会被设置为不可用,代码非常的简单.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>点击按钮之后

ScrollView循环滚动图片

涉及到banner页或者相册浏览,考虑到性能问题和用户体验性,经常要用到ScrollView循环滚动图片,在此只分析banner页,相册浏览类似: 设计思想: UIScrollView添加三个ImageView:firstImgView,secondImgView,thirdImgView. 当前每次显示的都是secondImgView,firstImgView显示前一张图片,thirdImgView显示后一张图片,若secondImgView显示的是第一张图片,则firstImgView显示最

监视scrollview是否滚动到底

//监视scrollview是否滚动到底 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ [refreshHeaderViewegoRefreshScrollViewDidScroll:scrollView];//下拉刷新 CGPoint contentOffsetPoint = _tableView.contentOffset; CGRect frame = _tableView.frame; if (contentOffsetP