如何让你的GridView不再滚动

来源:互联网 发布:淘宝代购开店流程 编辑:程序博客网 时间:2024/04/30 13:38

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

    

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

       //第一种方法重写dispatchTouchEvent
@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if(ev.getAction() == MotionEvent.ACTION_MOVE){return true;}return super.dispatchTouchEvent(ev);}
       //第二种方法重写onMeasure方法
@Overrideprotected 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强制适应其里面的控件数,伸缩大小

	
				
		
原创粉丝点击