我想禁用触摸listView行时出现的橙色突出显示。到目前为止,在我的xml中,我尝试了以下内容:
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
更多信息:当用户触摸此listView对象的屏幕时,我希望零差别。
答案 0 :(得分:655)
将此添加到您的xml:
android:listSelector="@android:color/transparent"
对于这个问题,这可能有用(我不确定,我不知道是否有更好的解决方案):
您可以将ColorStateList应用于TextView。
答案 1 :(得分:188)
RoflcoptrException的答案应该可以解决问题,但由于某些原因它对我不起作用,所以我发布了适用于我的解决方案,希望它可以帮助某人
<ListView
android:listSelector="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
/>
答案 2 :(得分:101)
橙色高亮效果是ListView上的style。 This article概述了如何覆盖listView样式。
基本上,您有一个选择器,它根据当前状态指定不同的样式元素。
请参阅此简要快速解决方案https://stackoverflow.com/a/12242564/185022
答案 3 :(得分:62)
来自ListView: Disable Focus Highlight,
当您设置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
类。它还会取消单元格之间的白色边框。
答案 4 :(得分:38)
将此添加到ur XMl以及listselector ..hope它将起作用
<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
答案 5 :(得分:32)
如果您使用ArrayAdapter
或BaseAdapter
填充列表项。 Override
方法isEnabled
并返回false
。
@Override
public boolean isEnabled (int position) {
return false;
}
答案 6 :(得分:13)
在虚拟和真实设备上进行了一些'google'和测试后,我注意到我的下面代码有效:
ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
public boolean isEnabled(int position)
{
return false;
}
};
请注意我省略了areAllItemsEnabled()
部分。
答案 7 :(得分:11)
没有什么可以帮助我,但是:
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"
答案 8 :(得分:7)
代码
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>
答案 9 :(得分:5)
对我而言android:focusableInTouchMode="true"
是要走的路。 android:listSelector="@android:color/transparent"
是没用的。请注意,我使用的是自定义列表视图,每行包含许多对象。
答案 10 :(得分:5)
你只需要添加:
android:cacheColorHint="@android:color/transparent"
答案 11 :(得分:4)
作为替代方案:
listView.setSelector(android.R.color.transparent);
或
listView.setSelector(new StateListDrawable());
答案 12 :(得分:1)
有快速简便的方法: 方法:
private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
//TODO
((ListView)sender).SelectedItem = null;
}
希望它能帮助;)
答案 13 :(得分:0)
如果要禁用单个列表视图项的突出显示,但保持启用该单元格,请设置该单元格的背景颜色以禁用突出显示。
例如,在您的单元格布局中,设置VrVideoView videoWidgetView = (VrVideoView) findViewById(R.id.video_view);
View framelayout = ((ViewGroup) videoWidgetView).getChildAt(0);
ArrayList<View> list = getAllChildren(framelayout);
for(final View view : list) {
if(view.getId() == R.id.transition_frame){
//set visiblity gone for that cardboard information screen
view.setVisibility(View.GONE);
}
else if(view.getId() == R.id.transition_icon){
//perform click action of the same screen's icon which can
//redirect you to cardboard vr screen directly(binocular mode)
view.performClick();
}
}
答案 14 :(得分:0)
你可以从pos
获得onItemClick
并做:
listView.setItemChecked(pos, false);
这是我所知道的最佳方式