我已创建自定义列表视图中,每一行看起来像我的文件custom_row.xml。 有什么办法,如何分别设置不同的背景颜色为每行(我需要设置它,因为不同的值,我行可以有)。
感谢您的任何想法
我已创建自定义列表视图中,每一行看起来像我的文件custom_row.xml。 有什么办法,如何分别设置不同的背景颜色为每行(我需要设置它,因为不同的值,我行可以有)。
感谢您的任何想法
因为你做的自定义列表视图中的getView方法膨胀的custom_row.xml改变充气方法的返回视图的背景之后。 请参阅下面示例代码段:
public getView(int position, View convertView, ViewGroup parent) {
convertView = getLayoutInflater().inflate(R.layout.custom_xml, null);
do some stuff...
//let say you have an arraylist of color
convertView.setBackgroundColor(arraylist.get(position));
//in case that your color is limited, just re-use your color again
//and some logic how to re-use the colors.
}
在适配器,可以手动设置当视图是使用getView方法检索的视图的背景颜色。
// set the background to green
v.setBackgroundColor(Color.GREEN);
这里使用其他答案防止选择正常工作和选择完全停止突出的行。 通过如在接受答案描述手动设置的颜色,选择停止突出行滚动时。 所以,我给大家介绍一个解决方案,不惹你的选择。
本文描述的是如何与透明度解决这个问题,但我不能真正使工作。 所以对我来说,解决办法是,我在我的文件夹绘制两个列表选择。 这样我可以在运行时设置两个不同的背景颜色,并保持工作的选择。
list_selector_darkgrey.xml我深灰色线
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_bg_darkgrey" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="true"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="false" android:state_selected="true"/>
</selector>
和list_selector.xml为浅灰色线
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_bg" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="true"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="false" android:state_selected="true"/>
</selector>
请忽略绘制梯度,你可以用你的颜色替换它。
在BaseAdapter类,我将调用setBackgroundResource显示一些行为浅灰色和其他行如深灰色。 选择颜色是相同的,并且XML文件中定义。
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.list_row, null);
... some logic ...
if (... some condition ...) {
vi.setBackgroundResource(R.drawable.list_selector_darkgrey);
}
else {
vi.setBackgroundResource(R.drawable.list_selector);
}
return vi;
}