android - ListView 项目的颜色非常淡

标签 android android-listview

抱歉,如果我重复这个问题。

我正在从收件箱读取短信并将其显示在 ListView 中。

执行后我可以在 ListView 中看到短信作为 ListView 项。

唯一的问题是, ListView 项目的文本颜色变浅。(我得到的文本不可读/不可见)。

我试图改变它,但什么也没发生。

我如何将此颜色更改为黑色或任何其他颜色?

这是我的activity_view_task.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/tv_tasks"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="Tasks"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<ListView
    android:id="@+id/lv_view_task"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tv_tasks"
    android:layout_centerHorizontal="true"
    android:cacheColorHint="#000000"
    android:textColor="#000000">

</ListView>
</RelativeLayout>

这是我的 java 文件,我将项目添加到 ListView 中:

package com.example.myapp;

import java.util.ArrayList;
import java.util.List;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ViewTask extends Activity {

TextView tv_view_task;
ListView lv_view_task;
static String sms = "";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_task);
    tv_view_task=(TextView) findViewById(R.id.tv_view_task);
    lv_view_task=(ListView) findViewById(R.id.lv_view_task);

    List<String> msgList = getSms();

    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.select_dialog_singlechoice, msgList); 
      lv_view_task.setAdapter(adapter); 
}


public List<String> getSms() {
    List<String> labeles = new ArrayList<String>();
    Uri uri = Uri.parse("content://sms/inbox");
    Cursor c = getContentResolver().query(uri, null, null, null, null);


    // Read the sms data and store it in the list
    if (c.moveToFirst()) {
        do {
            String body = c.getString(c.getColumnIndex("body"));
            String address = c.getString(c.getColumnIndex("address"));
            sms = "From : " + address + " : " + body;
            labeles.add(sms);
        } while (c.moveToNext());
    }
    c.close();

    return labeles;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_view_task, menu);
    return true;
}

}

执行后如下所示:

enter image description here

最佳答案

您需要为 ListView 项目创建自定义布局,并在其中设置所需的文本颜色。

这样,您甚至不需要自定义适配器

例如自定义 TextView .xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_height="wrap_content"
>
<TextView 
android:id="@+id/tv"
android:textColor="@color/white"
android:layout_width="fill_parent"
android:gravity="center"
android:layout_height="fill_parent"/>
</LinearLayout>

然后,您可以将布局与ArrayAdapter一起使用:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.custom_textview, aa);
lv.setAdapter(adapter);

关于android - ListView 项目的颜色非常淡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20760442/

相关文章:

android - 在 apk 中包含 jar,android studio

android - 在 onItemLongClick 中显示 AlertDialog 会给出有关父项的错误,我必须做什么?

java - 如何将ListView放入Fragment中

java - listView后台逻辑有问题

android - 数据丢失并在横向和纵向模式android中强制关闭

java - 由自定义 ArrayAdapter 中按钮的事件创建的 DialogFragment 始终具有相同的位置

Android - 当不在栏顶部时推送通知空白

android - 如何以编程方式在 Android 中将 ListView 滚动到上下手势

android - react-native android上的后台服务

android - 使用 SharedPreferences 的缺点?