完全禁用 Android GridView 的高亮显示(禁用选择)

12

我正在尝试禁用Android 2.2中GridView中对象的高亮显示。

我找到了这个回答,其中建议将选择器设置为透明的ColorDrawable (android:listSelector="@android:color/transparent"),但是当我选择它们时,我的GridView中的视图仍然变暗。

我只是使用GridView在网格中显示静态对象。这些对象中不会有任何一个被选中。直接使用基本视图并手动绘制我的图片是否更好?


请查看以下内容:https://stackoverflow.com/questions/18415844/disable-gridview-item-onclick-and-enable-only-on-child-view - sushmita
4个回答

39

1
@Radu 这个解决方案在问题中明确提到不起作用。 - blahdiblah
最好使用android:listSelector="@null"。 - Dmitry Guselnikov

24

在为GridView定义适配器时,您需要覆盖以下方法:

@Override
public boolean areAllItemsEnabled()
{
    return false;
}

@Override
public boolean isEnabled(int position)
{
    return false;
}

这将导致你的网格中所有的项目都无法被选择,并完全消除高亮。


2
如果您需要使子项可以聚焦,请尝试使用android:descendantFocusability="afterDescendants"。 - eveliotc
非常感谢您在这里。如果您的列表中有自定义对象(视图...)并覆盖它们的onclicklistener,您可以选择它们:=) 完美 :) - cV2
这将完全禁用项目选择。 - coderek

1

只需设置 v.setOnClickListener(null);


这段代码位于你的 Adapter.getView 方法中。 - jfleong
我仍然需要能够获取 GridView 的点击事件,但我相信在其他情况下也会起作用。 - Kenny
这将创建一个异常。 - eyadMhanna

0
如果您只想禁用选择的可视化效果,可以执行以下操作:
gridview.getSelector().setAlpha(0);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接