如何更改简单列表项的文本颜色

Use*_*337 42 android listview

我有一个ListActivity,我正在显示一个列表:

setListAdapter(new ArrayAdapter<String>(getApplicationContext(),
                android.R.layout.simple_list_item_single_choice, mStringList));
Run Code Online (Sandbox Code Playgroud)

默认情况下,列表项的文本颜色为白色,我想将列表中文本视图的文本颜色更改为黑色.

我该怎么办?

dha*_*007 84

另一种最简单的方法是使用textSize,textStyle,color等创建一个包含所需textview的布局文件,然后将其与ArrayAdapter一起使用.

例如mytextview.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv"
    android:textColor="@color/font_content"
    android:padding="5sp"
    android:layout_width="fill_parent"
    android:background="@drawable/rectgrad"
    android:singleLine="true"
    android:gravity="center"
    android:layout_height="fill_parent"/>
Run Code Online (Sandbox Code Playgroud)

然后像往常一样将它与ArrayAdapter一起使用

ListView lst = new ListView(context);
String[] arr = {"Item 1","Item 2"};
ArrayAdapter<String> ad = new ArrayAdapter<String>(context,R.layout.mytextview,arr);
lst.setAdapter(ad);
Run Code Online (Sandbox Code Playgroud)

这样您就不需要为它创建自定义适配器.

  • 真棒片段! (3认同)

Cam*_*aul 47

我意识到这个问题有点旧,但这是一个非常简单的解决方案. 您无需创建自定义ListView甚至自定义布局.

只需创建一个ArrayAdapter的匿名子类并覆盖getView().让super.getView()处理所有繁重的工作.由于simple_list_item_1只是一个文本视图,您可以自定义它(例如设置textColor)然后返回它.

这是我的一个应用程序的示例.我正在显示最近的位置列表,我希望所有出现的"当前位置"都是蓝色,其余的都是白色.

ListView listView = (ListView) this.findViewById(R.id.listView);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MobileMuni.getBookmarkStore().getRecentLocations()) {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView textView = (TextView) super.getView(position, convertView, parent);

        String currentLocation = RouteFinderBookmarksActivity.this.getResources().getString(R.string.Current_Location);
        int textColor = textView.getText().toString().equals(currentLocation) ? R.color.holo_blue : R.color.text_color_btn_holo_dark;
        textView.setTextColor(RouteFinderBookmarksActivity.this.getResources().getColor(textColor));

        return textView;
    }
});
Run Code Online (Sandbox Code Playgroud)


chi*_*hip 35

你只需覆盖getView方法ArrayAdapter

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), 
        android.R.layout.simple_list_item_1, mStringList) {
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        TextView text = (TextView) view.findViewById(android.R.id.text1);
        text.setTextColor(Color.BLACK);
        return view;
    }
};
Run Code Online (Sandbox Code Playgroud)


mat*_*red 7

最简单的方法是不需要创建任何额外的东西就是修改简单列表TextView:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, android.R.id.text1, strings) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                TextView textView = (TextView) super.getView(position, convertView, parent);
                textView.setTextColor({YourColorHere});
                return textView;
            }
        };
Run Code Online (Sandbox Code Playgroud)