如何以编程方式指定 android:listSelector="@null"?

17

由于某些原因,我在模拟器中没有发现gridview列边框周围的额外空间,但是在我的真实设备(Galaxy S)上发现了额外的像素。因此,我想尝试:

android:listSelector="@null" 

编程实现。

我知道它相关的方法是 setSelector。但是对于 "@null",我应该给什么数字或ID呢?我尝试了 0 但是导致了应用程序崩溃。

更新:我通过创建自己的选择器来解决问题。


1
如果您想取消listSelector的可绘制性,请使用setSelector(null)而不是setSelector(0)。但我不确定它是否能帮助您解决边距/填充问题。 - praetorian droid
糟糕...真的不起作用,抱歉。你尝试为每个GridView子元素设置不同的背景颜色,以找出哪些元素是多余的像素吗? - praetorian droid
很奇怪。我刚刚进行了一些实验,使用默认的列表项选择器,在行之间有一个像素的空隙,但是没有列之间的空隙。可能这是版本相关的行为。无论如何,当将listSelector设置为@null@android:color/transparent时,边框就消失了。那么为什么不为GridView使用适当的布局呢?即使您想以编程方式创建它,也可以使用GridView.inflate()。因此,您不需要使用可能存在错误的setSelector()方法。 - praetorian droid
很高兴听到这个消息。您仍然可以使用android.R.color.transparent作为选择器来减少应用程序资源。 - praetorian droid
我认为你夸大了 :) 最好的感谢方式是在这里帮助别人。 - praetorian droid
2个回答

18

使用这个:

listView.setSelector(new StateListDrawable());

将禁用该选择器 :)


11
listView.setSelector(android.R.color.transparent);

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