【问题标题】:Alternating Android ListView colors not working交替的Android ListView颜色不起作用
【发布时间】:2026-01-27 20:10:01
【问题描述】:

我已扩展 SimpleAdapter 以在我的 ListView 中设置交替颜色。我可以确认 getView 正在被调用。但是,屏幕上永远不会发生颜色变化。我到处都试过 android:cacheColorHint="#00000000" 但这不起作用。有什么想法吗?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">

  <Spinner android:id="@+id/summary_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true" 
    android:prompt="@string/summary_spinner_prompt"/>


  <Button android:id="@+id/summary_button_show"
    android:text="@string/summary_button"                
    android:layout_width="wrap_content"               
    android:layout_height="wrap_content"
    android:padding="5sp"
    android:layout_toRightOf="@id/summary_spinner"/>

   <TextView android:id="@+id/summary_list_header1"
    android:text="@string/summary_age"                
    android:layout_width="wrap_content"               
    android:layout_height="wrap_content" 
    android:layout_below="@id/summary_spinner"
    android:background="#8B8989"
    android:textColor="#000000"/>

   <TextView android:id="@+id/summary_list_header2"              
    android:layout_width="wrap_content"               
     android:layout_height="wrap_content" 
    android:layout_below="@id/summary_spinner"
    android:layout_alignParentRight="true"
    android:background="#8B8989"
     android:textColor="#000000"/>

   <ListView android:id="@id/android:list"               
      android:layout_width="match_parent"               
      android:layout_height="wrap_content"                             
     android:layout_below="@id/summary_list_header1"
     android:cacheColorHint="#00000000"
     android:visibility="visible"/>     


</RelativeLayout>

 

    public class MySimpleAdapter extends SimpleAdapter 
    {

        private int[] colors = new int[] { 0xEEE9E9, 0xCDC9C9 };


    public MySimpleAdapter(Context context, List<HashMap<String, String>> items, int resource, String[] from, int[] to) 
    {
        super(context, items, resource, from, to);
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {  

        View view = super.getView(position, convertView, parent);  

        int colorPos = position % colors.length;  

        view.setBackgroundColor(colors[colorPos]);  

        return view;  

    } 

}

【问题讨论】:

    标签: java android-widget


    【解决方案1】:

    看起来您正在使用 alpha = 0 设置颜色;尝试添加 alpha 组件(例如,使用 0xFFEE9E9E 代替 0xEE9E9E)。您正在设置完全透明的颜色...

    【讨论】: