ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Listview没有滚动浏览android中的视图鳍状肢

2019-07-05 02:26:00  阅读:148  来源: 互联网

标签:android listener listview gesture


视图鳍状肢有4个列表视图.当我使用在视图鳍状肢上实现的手势监听器翻转视图鳍状肢时,它工作正常.但我无法滚动列表视图,因为触摸事件无法从视图鳍状态向下流入列表视图.请提供解决方案.

private class MyViewFlipper extends ViewFlipper implements OnGestureListener {
    GestureDetector gestureScanner = new GestureDetector(this);
    Context context;

    public MyViewFlipper(Context context) {
        super(context);
        this.context=context;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) { 
        return gestureScanner.onTouchEvent(event);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {  
        return gestureScanner.onTouchEvent(event);
    }

    @Override
    public boolean onDown(MotionEvent arg0) {
        return true;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        try {
            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) return false;

            // right to left swipe
            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE &&
                Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                this.setOutAnimation(AnimationUtils.loadAnimation(context,R.anim.push_left_out));
                this.setInAnimation(AnimationUtils.loadAnimation(context,R.anim.push_left_in));
                this.showNext();
                return true;
            } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE &&
                       Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                this.setOutAnimation(AnimationUtils.loadAnimation(context,R.anim.push_right_out));
                this.setInAnimation(AnimationUtils.loadAnimation(context,R.anim.push_right_in));
                this.showPrevious();
                return true;
            } else if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE &&
                       Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
                return true;
            } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE &&
                       Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
                return true;
            }
       } catch (Exception e) {
            e.printStackTrace();
            //Toast.makeText(context, "Error Occurred", Toast.LENGTH_LONG);
       }
       return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {

    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        //I want this event to be handled by list view
        this.getCurrentView().findViewWithTag("hierarchy_list").dispatchTouchEvent(e1);

        Log.i(LOG_TAG, "Scroll");
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        //DO something  
        return false;
    }
}

解决方法:

@Override
public boolean onInterceptTouchEvent(MotionEvent event) { 
    gestureScanner.onTouchEvent(event);
    return false;
}

@Override
public boolean onTouchEvent(MotionEvent event) {  
    gestureScanner.onTouchEvent(event);
    return false; 
}

希望事件将传递下去.

标签:android,listener,listview,gesture
来源: https://codeday.me/bug/20190705/1382991.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有