0

我有网格视图和基本适配器。我总是在适配器中有 12 个元素,但有时需要有不可聚焦或不可见的元素。

如果我有一个可见元素,然后按右,则选择不可见项目。我需要以某种方式禁用网格中该元素的焦点。

我试着用

 @Override
    public boolean areAllItemsEnabled() {

        Log.d("ARE ALL ITEMS", "ENTERED");
        return false;
    }

    @Override
    public boolean isEnabled(int position) {

        if (position >= numberOFRealElement) {
            Log.d("FAVORITE DISABLED", "ENTERED");
            return false;
        }

        Log.d("FAVORITE ENABLED", "ENTERED");
        return true;
    }

但没有成功。如何调用这些方法?似乎它们不会被自动调用。

编辑:隐藏元素代码:

        item.setVisibility(View.GONE);
        item.setFocusable(false);
        item.setEnabled(false);
        item.setClickable(false);


        return item;
4

2 回答 2

0

尝试使用view.setVisibility(View.GONE);

当你让你的 view setVisibility(View.INVISIBLE),它只是不可见的,但它仍然在 UI 中占有一席之地,但是当你使用时GONE,视图变得不可见,并且它也不使用 UI 中的任何空间。

因此,在您的情况下,当它变​​为 时GONE,它将无法获得任何焦点或无法被选中。

于 2012-09-25T09:48:56.240 回答
0

我没有成功地简单地解决这个问题,所以我必须找到这个 Android 错误的解决方法。我必须在 GridView 上附加 OnKeyListener 并检测所选位置是什么。如果用户单击右键或向下并且有不可见元素,我在 KeyListener 中返回 true,并且 Android 不会响应该键。:)

于 2012-10-09T07:51:41.727 回答