android listview替代行颜色,但具有默认光标选择
我已经浏览了所有的网页,包括stackoverflow,但似乎无法找到一个清晰完整的方法 我想创建一个列表视图 1) 有交替的颜色(我能用下面的代码做到这一点) 2) 保留android的默认橙色选择行为 为了实现#1,我有一个自定义适配器 扩展ArrayAdapter,然后像这样重写getViewandroid listview替代行颜色,但具有默认光标选择,android,listview,colors,row,alternate,Android,Listview,Colors,Row,Alternate,我已经浏览了所有的网页,包括stackoverflow,但似乎无法找到一个清晰完整的方法 我想创建一个列表视图 1) 有交替的颜色(我能用下面的代码做到这一点) 2) 保留android的默认橙色选择行为 为了实现#1,我有一个自定义适配器 扩展ArrayAdapter,然后像这样重写getView public View getView(int position, View convertView, ViewGroup parent) { .... // tableLayout
public View getView(int position, View convertView, ViewGroup parent)
{
....
// tableLayoutId is id pointing to each view/row in my list
View tableLayoutView = view.findViewById(R.id.tableLayoutId);
if(tableLayoutView != null)
{
int colorPos = position % colors.length;
tableLayoutView.setBackgroundColor(colors[colorPos]);
}
}
我的颜色成员变量是
private int[] colors = new int[] { 0x30ffffff, 0x30ff2020, 0x30808080 };
跟随文章“Android–使用SimpleAdapter在ListView中应用替代行颜色”
这就是我被卡住的地方,我在stackoverflow上看到了一些关于这样做的提及,因为这很常见,他们建议将这个属性添加到
android:listSelector=“@color/list\u项目”
其中list_item.xml类似于
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/transparent" />
.....
</selector>
.....
然后我必须向getView()添加代码,以确定我处于哪个状态
并据此采取行动
有没有一个例子可以让它发挥作用?谢谢大家
如果我能让它工作的话,我很乐意把我的贴出来供大家使用-(解决方法是使用2个选择器。从适配器中,您可以设置2个选择器,而不是设置2种颜色
if (position % 2 == 0) {
view.setBackgroundResource(R.drawable.selector_1);
} else {
view.setBackgroundResource(R.drawable.selector_2);
}
选择器_1在selector_1.xml中定义如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/white" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/violet" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" />
</selector>
选择器_2在selector_2.xml中定义如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/white" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/violet" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" />
</selector>
这样,您就有了一个双色列表视图和一个第三种颜色/形状/所需的任何选定项