android背景置灰,Android ListView背景颜色始终显示为灰色

我有一个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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要改变ListView中特定项的背景颜色,您可以使用自定义适配器来为每个项设不同的背景颜色。以下是一个示例: 1. 创建自定义适配器MyAdapter: ```java public class MyAdapter extends ArrayAdapter<String> { private int[] colors; public MyAdapter(Context context, int resource, List<String> objects) { super(context, resource, objects); colors = new int[objects.size()]; Arrays.fill(colors, Color.WHITE); // 默认所有项的背景颜色为白色 } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); view.setBackgroundColor(colors[position]); // 设指定项的背景颜色 return view; } public void setColor(int position, int color) { colors[position] = color; notifyDataSetChanged(); // 刷新列表 } } ``` 2. 在Activity中使用自定义适配器: ```java public class MainActivity extends AppCompatActivity { private ListView listView; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.list_view); adapter = new MyAdapter(this, android.R.layout.simple_list_item_1, Arrays.asList("Item 1", "Item 2", "Item 3")); listView.setAdapter(adapter); // 点击列表项时改变其背景颜色 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { adapter.setColor(position, Color.YELLOW); } }); } } ``` 在上述示例中,我们使用自定义适配器MyAdapter为ListView不同的背景颜色,并在Activity中通过设ItemClickListener来改变指定项的背景颜色。您可以根据自己的需求修改自定义适配器的代码,以适应不同的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值