我有一个ListView ,我从自定义ListAdapter填充 。 在适配器内部(在getView(int,View,ViewGroup)方法中)我使用setBackgroundColor(int)设置View的背景颜色。 问题在于,无论我将背景设置为什么颜色,它总是会出现深灰色。 值得注意的是,我正在使用Light主题。
相关(简化)代码:
AndroidManifest.xml中:
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; }
有什么想法/建议吗?
您应该使用: setBackgroundResource(R.color.myRow_red)而不是setBackgroundColor() 。 在您的示例中,背景颜色分配了ID而不是资源中描述的实际颜色。
您必须将cacheColorHint属性设置为列表所需的背景颜色。 这是考虑到Android在列表上执行的绘图优化所必需的解决方法。
请参见此处: 链接文字
我遇到了一个类似的问题,分频器出现灰色。 我发现其他解决方案没有效果,但是我的ListView工作的android:divider="" 。
冷却始终将整行包裹在另一个视图中,并在该视图上设置背景颜色。 该视图将是该行的第一个(也是唯一的)子级。
尝试这样做:
av.setBackgroundColor(getResources().getColor(R.color.myRow_red));
尝试这个:
setBackgroundColor(0xFF5DB9FB);