我想禁用在触摸listView行时出现的橙色高亮。到目前为止,在我的xml中,我尝试了以下方法:
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
更多信息:我希望当用户触摸此listView对象时,没有任何差异。
我想禁用在触摸listView行时出现的橙色高亮。到目前为止,在我的xml中,我尝试了以下方法:
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
更多信息:我希望当用户触摸此listView对象时,没有任何差异。
android:listSelector="@android:color/transparent"
对于这个问题,可能会有解决方案(我不确定,也不知道是否有更好的解决方案):
您可以将ColorStateList应用于TextView。
RoflcoptrException的回答应该可以解决问题,但由于某些原因它对我没有起作用,所以我发布了对我有用的解决方案,希望能帮到其他人。
<ListView
android:listSelector="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
/>
当您设置ListAdapter
时,请使用以下代码:
ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c,
new String[] { "Name", "Score" }, to)
{
public boolean areAllItemsEnabled()
{
return false;
}
public boolean isEnabled(int position)
{
return false;
}
};
这将覆盖BaseAdapter
类。它还取消了单元格之间的白色边框。
isEnabled
以禁用项目并不是禁用它的正确方法!文档说明isEnabled
应该确定一个项目是否为分隔符,而非禁用它。 - Bakhshi希望你也将这个添加到你的XML中,与listselector一起使用。希望它能够起作用。
<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
如果您正在使用 ArrayAdapter
或 BaseAdapter
来填充列表项,请 覆盖
isEnabled
方法并返回 false
。
@Override
public boolean isEnabled (int position) {
return false;
}
通过一些谷歌搜索以及在虚拟和真实设备上的测试,我注意到下面的代码可以工作:
ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
public boolean isEnabled(int position)
{
return false;
}
};
请注意,我省略了areAllItemsEnabled()
部分。
我只有这个能帮到我:
transparent_drawable.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000"/>
</shape>
layout.xml
:
android:listSelector="@drawable/transparent_drawable"
listView.setSelector(getResources().getDrawable(R.drawable.transparent));
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00000000"/>
</shape>
对于我而言,android:focusableInTouchMode="true"
是正确的方式。 android:listSelector="@android:color/transparent"
没有用处。请注意,我正在使用一个自定义listview,在每一行中包含多个对象。
android:focusableInTouchMode="true"
允许视图响应触摸,因此(据我测试)它的背景生效,而不是listView的 listSelector。如果其背景为默认透明,则不会绘制任何内容。当我们使一个视图可点击时,它也变得 focusableInTouchMode
,这就是为什么可点击视图从可能的选择器中获取其背景并进行绘制,如 android:background="@drawable/list_selector_highlight"
。 - arberg
listView.setSelector(android.R.color.transparent);
来设置ListView的选择器颜色为透明。 - sulaiandroid:cacheColorHint="@android:color/transparent"
,我无法让它正常工作。 - Machado