我有网格视图和基础适配器。 我总是在适配器中有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;
答案 0 :(得分:0)
尝试使用view.setVisibility(View.GONE);
当你创建视图setVisibility(View.INVISIBLE)
时,它只是不可见,但它仍然保留在UI中的位置,但是当你使用GONE
时,视图变得不可见,并且它也不会使用任何空间UI。
因此,在您的情况下,当它变为GONE
时,它将无法获得任何焦点或无法被选中。
答案 1 :(得分:0)
我没有成功解决这个问题,所以我不得不找到这个Android bug的解决方法。 我必须在GridView上附加OnKeyListener并检测所选位置是什么。如果用户单击或向下单击并且存在不可见元素,则在KeyListener中返回true,并且Android不响应该键。 :)