我有ListView我正在使用自定义ListAdapter填充。在适配器内部(在getView(int, View, ViewGroup)方法中)我使用View设置setBackgroundColor(int)的背景颜色。问题在于,无论我将背景设置为什么颜色,它总是出现深灰色。值得注意的是,我正在使用Light主题。
代码的相关(简化)位:
的AndroidManifest.xml:
<activity
android:name=".MyActivity"
android:theme="@android:style/Theme.Light" />
MyAdapter.java:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View av = inflater.inflate(R.layout.my_row, parent, false);
av.setBackgroundColor(R.color.myRow_red);
mName = (TextView) av.findViewById(R.id.myRow_name);
mName.setText("This is a name");
return av;
}
有任何想法/建议吗?
答案 0 :(得分:21)
你应该使用:
setBackgroundResource(R.color.myRow_red)
而不是setBackgroundColor()
。 在您的示例中,背景颜色分配了ID ,而不是资源中描述的实际颜色。
答案 1 :(得分:6)
您必须将cacheColorHint属性设置为列表所需的背景颜色。这是考虑Android在列表上执行的绘图优化所必需的解决方法。
见这里:link text
答案 2 :(得分:2)
我遇到了一个类似的问题,分隔线出现灰色。我发现其他解决方案没有效果,但我android:divider="<drawable,color, or whatever>"
ListView
工作了。
答案 3 :(得分:0)
冷却总是将整行包裹在另一个视图中,并在该视图上设置背景颜色。该视图将是该行的第一个(也是唯一的)子级。
答案 4 :(得分:0)
试试这个:
setBackgroundColor(0xFF5DB9FB);
答案 5 :(得分:0)
尝试这样做:
av.setBackgroundColor(getResources().getColor(R.color.myRow_red));