【问题标题】:How to disable GridView scrolling in Android?如何在 Android 中禁用 GridView 滚动?
【发布时间】:2011-06-18 16:20:30
【问题描述】:

我将 GridView 用于游戏板。最近一些用户遇到了垂直滚动板的问题(在运行 2.2 的三星 Galaxy / Vibrant 手机上)——这个错误在我的 Nexus One 上没有出现。

一位用户提出了一些screenshots 的问题。

如何将 GridView 锁定到位?有没有办法禁用滚动?

【问题讨论】:

    标签: android gridview


    【解决方案1】:

    尝试为GridView添加或覆盖setOnTouchListener, 然后在onTouch 方法中,您可以使用这样的代码 使gridView 不可滚动

    Java

    gridView.setOnTouchListener(new OnTouchListener() {
    
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return event.getAction() == MotionEvent.ACTION_MOVE;
        }
    
    });
    

    科特林

    gridView.setOnTouchListener { v, event ->
        event.action == MotionEvent.ACTION_MOVE
    }
    

    【讨论】:

    • 这是一个正确的解决方案,应该被接受。
    • 它也停止了对 GridView 的 onItemClick 触发。如何预防?
    • 如果需要,重新启用 GridView 滚动的代码是什么?
    【解决方案2】:

    您可以尝试 setEnabled(false),尽管它可能有其他副作用。 GridView 并不是真的要以您使用它的方式使用。您应该创建自己的自定义视图或布局。您也可以使用 TableLayout。

    【讨论】:

    • 是的,我意识到它应该是一个自定义视图。替换当前的 GridView 将涉及更多(早期设计错误)。希望有一个快速修复:) setEnabled() 方法禁用所有功能。谢谢罗曼
    • Romain Guy 不希望您在不滚动的情况下使用 GridView。我使用这个stackoverflow.com/a/4536955/671543 技巧。
    • 对于未来的读者,我发现了一个 TableLayout 示例:stackoverflow.com/a/8639461/3844201
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多