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