如何让你的GridView不再滚动

   今天,看了让GridView不会自动滚动的两种方法.顺便做点记录

    

    这两种方法都需要重写GridView..下面看代码

       //第一种方法重写dispatchTouchEvent
	@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
		if(ev.getAction() == MotionEvent.ACTION_MOVE)
		{
			return true;
		}
		return super.dispatchTouchEvent(ev);
	}
       //第二种方法重写onMeasure方法
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int expandSpec = MeasureSpec.makeMeasureSpec(   
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 
		super.onMeasure(widthMeasureSpec, expandSpec);
	}


    public boolean dispatchTouchEvent(MotionEvent event) {
        if (!onFilterTouchEventForSecurity(event)) {
            return false;
        }

        if (mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED &&
                mOnTouchListener.onTouch(this, event)) {
            return true;
        }
        return onTouchEvent(event);
    }

     源码上定义了,当有OnTouchListener ,或者onTouch方法时,(中间那个不是太懂,水平不足请高手留言告知...求不喷),返回true. 

     这里返回true的意思是,该方法已经处理完这个事件了,然后把事件再分发出去,要是不返回true,即表示此动作被拦截.其他监听器,控件就不能获得这个事件了.(详情查看文档,记得不是很清楚了)

     所以第一个方法就是当这个方法拦截到的MotionEvent是移动的时候,把这个事件分发出去给其他控件,或者监听器处理.

     第二个方法没有详细看过,网上给的意思是,这样处理会让GridView强制适应其里面的控件数,伸缩大小





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值