更改ListView的文本颜色

13

我正在尝试改变ListView的文本颜色,但是我找不到如何做到...

    listViewObject= (ListView) findViewById(R.id.chathlist);        
    ArrayList<String> chatHistory = new ArrayList<String>();
    chatHistory.add("Msg 1");
    chatHistory.add("Msg 2");
    chatHistory.add("Msg 3");
    chatHistory.add("Msg 4");
    chatHistory.add("Msg 5");
    chatHistory.add("Msg 6");
    chatHistory.add("Msg 7");
    ArrayAdapter aa=new ArrayAdapter<String>(getApplicationContext(),
    android.R.layout.simple_list_item_1, chatHistory);
    listViewObject.setAdapter(aa);
    listViewObject.invalidate();

我尝试了很多方法,但无法改变颜色。这可能是一件简单的事情,但我正在努力解决这个问题。

我的XML文件是:

  <RelativeLayout android:id="@+id/chat_history_container"
            android:layout_width="fill_parent" android:layout_height="wrap_content">
            <ListView android:paddingTop="15dip" android:paddingBottom="15dip"
                android:layout_width="fill_parent" android:paddingLeft="15dip"
                android:layout_height="wrap_content" android:id="@+id/chathlist"
                android:layout_gravity="center_horizontal"
                android:layout_centerInParent="true" android:paddingRight="15dip"
                 android:textColor="#FF0000"  android:listSelector="@drawable/gradient_box" >
            </ListView>
  </RelativeLayout>
2个回答

11

6
问题是你正在使用默认的列表项布局“android.R.layout.simple_list_item_1”。如果你想改变listview中文本的颜色,你必须创建自己的列表项布局,并设置正确的文本颜色。
你可以将以下代码添加到你的layout文件夹中:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@android:id/text1"
        style="?android:attr/listItemFirstLineStyle"
        android:paddingTop="2dip"
        android:paddingBottom="3dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:textColor="#FF0000" /> 

那么,传递此项而不是android.R.layout.simple_list_item_1


当你的ListView被设置为singleChoice以显示RadioButtons时,这种方法就毫无用处了。编写自己的自定义布局需要开发自己的适配器和更多的代码。如果列表只显示文本项而没有RadioButtons,那么你的解决方案是可以的。 - Johann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接