Android ListView 容忍度

标签 android

我有一个列表项,每个列表项中都有一个 Horizo​​ntalScrollView。因此,我应该能够上下滑动列表并水平滑动列表项。 (例如 Pulse News 应用程序)。

我遇到的是,每当我滚动 Horizo​​ntalScrollView 时,ListView 也会滚动一点点,但在用户体验方面会产生恼人的干扰。

所以,我实际上是在考虑继承 ListView 并实现我自己的 ListView 小部件。但是,我不知道要覆盖哪种方法,以便我可以增加 X 容差并阻止 ListView 产生这些不需要的闪烁。

最佳答案

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;
        }
    }

这会帮助你,你必须在你创建的自定义 ListView 中覆盖这些,我用它来消除我的应用程序中的问题。希望这可以帮助。

关于Android ListView 容忍度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7339558/

相关文章:

java - 在 Firebase 中获取子项计数

android - 如何强制以横向模式显示键盘?

javascript - 为什么 JavaScript 警报在 Phonegap Android 应用程序中显示空字符串,而代码在浏览器上运行良好?

android - Pubnub 列出与 channel 关联的设备 token ?

java - 三星 s8 和 s9 中的 Android 外部写入权限问题

java - 无法在Android中使用retrofit2获取JSON数据

android - ionic +快车道 |安卓 "error: package android.support.v4.content does not exist"

迁移到 androidx 后,Android 应用程序在 API 21 之前停止工作

Android 图像 png 颜色不正确

java.io.FileNotFoundException : content://com. android.contacts/contacts/24093/photo 仅适用于旧照片