zoukankan      html  css  js  c++  java
  • PullToRefreshScrollView嵌套SwipeMenuListView冲突问题解决

    参考: 

    http://blog.csdn.net/u012255016/article/details/46048797

     

    public class NoScrollSwipeMenuListView extends SwipeMenuListView {
        private GestureDetector mGestureDetector;
        View.OnTouchListener mGestureListener;
    
        public NoScrollSwipeMenuListView(Context context) {
            super(context);
            mGestureDetector = new GestureDetector(context, onGestureListener);
        }
    
        public NoScrollSwipeMenuListView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            mGestureDetector = new GestureDetector(context, onGestureListener);
        }
    
        public NoScrollSwipeMenuListView(Context context, AttributeSet attrs) {
            super(context, attrs);
            mGestureDetector = new GestureDetector(context, onGestureListener);
        }
    
        private GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener() {
    
            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                if (Math.abs(distanceY) >= Math.abs(distanceX)) {
                    return true;
                }
                // 当手指触到listview的时候,让父ScrollView交出ontouch权限,也就是让父scrollview 停住不能滚动
                setParentScrollAble(false);
                return false;
            }
        };
    
        /**
         * 是否把滚动事件交给父scrollview
         * 
         * @param flag
         */
        private void setParentScrollAble(boolean flag) {
            // 这里的parentScrollView就是listview外面的那个scrollview
            getParent().requestDisallowInterceptTouchEvent(!flag);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
            mGestureDetector.onTouchEvent(ev);
            return super.onTouchEvent(ev);
        }
    
        /*
         * 
         * 重写该方法,达到使ListView适应ScrollView的效果
         */
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
            super.onMeasure(widthMeasureSpec, expandSpec);
        }
    }
  • 相关阅读:
    perl文本输出对齐
    putty配色方案
    java线程 同步与异步 线程池
    android为什么不允许新开启一个线程来更新UI,而是用handler来更新界面
    真正能获得基站LBS定位的android程序包括GSM、CDMA
    Android之TelephonyManager&GsmCellLocation类的方法详解
    网络编程之同步,阻塞,异步,非阻塞
    Android私有文件资源文件的存取
    [转]android 获取手机GSM/CDMA信号信息
    json格式转换
  • 原文地址:https://www.cnblogs.com/jinglecode/p/5639466.html
Copyright © 2011-2022 走看看