非焦点元素上的Android GridView选择

时间:2012-09-25 09:30:03

标签: android gridview

我有网格视图和基础适配器。 我总是在适配器中有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;

2 个答案:

答案 0 :(得分:0)

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

当你创建视图setVisibility(View.INVISIBLE)时,它只是不可见,但它仍然保留在UI中的位置,但是当你使用GONE时,视图变得不可见,并且它也不会使用任何空间UI。

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

答案 1 :(得分:0)

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