开发者

Android ListView tolerance

开发者 https://www.devze.com 2023-04-03 02:54 出处:网络
I have list items that have a HorizontalScrollView in each of them. Hence, I should be able to swipe up and down the list and also swipe through the list item horizontally. (e.g. Pulse News App).

I have list items that have a HorizontalScrollView in each of them. Hence, I should be able to swipe up and down the list and also swipe through the list item horizontally. (e.g. Pulse News App).

What I'm encountering is that, whenever I scroll the Horiz开发者_StackOverflowontalScrollView, the ListView also gets scrolled by tiny bit but giving out annoying disturbances in terms of User Experience.

So, I was actually thinking to subclass ListView and implement my own ListView widget. However, I don't know which method to override so that I could increase X tolerance and stop the listview from giving these unwanted flickering.


gestureDetector = new GestureDetector(new YScrollDetector());

public boolean onInterceptTouchEvent(MotionEvent ev) {


        //Call super first because it does some hidden motion event handling
        boolean result = super.onInterceptTouchEvent(ev);
        //Now see if we are scrolling vertically with the custom gesture detector
        if (gestureDetector.onTouchEvent(ev)) {
            return result;
        } 
        //If not scrolling vertically (more y than x), don't hijack the event.
        else {
            return false;
        }
    }

    // Return false if we're scrolling in the x direction  
    class YScrollDetector extends SimpleOnGestureListener {
        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            try {
                if (Math.abs(distanceY) > Math.abs(distanceX)) {
                    return true;
                } else {
                    return false;
                }
            } catch (Exception e) {
                // nothing
            }
            return false;
        }
    }

This is will help you, you have to override these in the custom list view you create,i used this to eliminate the problem in my application. Hope this helps.

0

精彩评论

暂无评论...
验证码 换一张
取 消