我想禁用触摸 listView 行时出现的橙色突出显示。到目前为止,在我的 xml 中,我尝试了以下操作:
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
更多信息:我希望用户在此 listView 对象上触摸屏幕时差异为零。
我想禁用触摸 listView 行时出现的橙色突出显示。到目前为止,在我的 xml 中,我尝试了以下操作:
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
更多信息:我希望用户在此 listView 对象上触摸屏幕时差异为零。
将此添加到您的 xml:
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
类。它还取消了单元格之间的白色边框。
将此与列表选择器一起添加到您的 XMl 中。希望它会起作用
<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
如果您正在使用ArrayAdapter
或BaseAdapter
填充列表项。Override
方法和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));
并将小的透明图像添加到可绘制文件夹。
喜欢:transparent.xml
<?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"
没用。请注意,我使用的是自定义列表视图,每行中有多个对象。
您只需要添加:
android:cacheColorHint="@android:color/transparent"
作为备选:
listView.setSelector(android.R.color.transparent);
或者
listView.setSelector(new StateListDrawable());
有一种快速简便的方法可以做到这一点: 在方法中:
private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
//TODO
((ListView)sender).SelectedItem = null;
}
希望它会有所帮助;)
如果要禁用单个列表视图项的突出显示,但保持单元格处于启用状态,请设置该单元格的背景颜色以禁用突出显示。
例如,在您的单元格布局中,设置android:background="@color/white"
你可以得到pos
你从中得到的,onItemClick
然后做:
listView.setItemChecked(pos, false);
这是我所知道的最好的方式