Android ListView文字颜色

Har*_*M V 49 android listview

我试图将ListView textColor设置为黑色,因为我使用的是白色背景.

这是我的MailActivity

public class MailActivity extends ListActivity {

    String[] listItems = { "Compose", "Inbox", "Drafts", "Sent" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.mails);

        setListAdapter(new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, listItems));

    }
}
Run Code Online (Sandbox Code Playgroud)

和我的XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="#FFFFFF">

    <ListView 
        android:id="@android:id/list" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <TextView 
        android:id="@android:id/empty" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:text="Empty set" 
        android:textColor="#000000" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我将背景设为白色,但不确定将前景设置为黑色.我试过xml,看起来没有帮助.

Sha*_*dul 145

好的,这里有一些你应该清楚的事情:

  1. 您在xml文件中设置的背景颜色是活动而不是您尝试定义的ListItem.
  2. 每个列表项都有自己的布局文件,如果您对列表项使用复杂布局,则应该传递或膨胀.

我将尝试用代码示例解释这个:

****让我们从ListItems布局开始**:将它保存在你res/layout的Android项目的文件夹中,例如**list_black_text.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Definig a container for you List Item-->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center_vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!-- Defining where should text be placed. You set you text color here-->
    <TextView
        android:id="@+id/list_content"
        android:textColor="#000000"
        android:gravity="center"
        android:text="sample"
        android:layout_margin="4dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

嗯,简单的布局,TextView准确.您必须为TextView分配一个ID才能使用它.

现在来到你的屏幕/活动/主要布局,正如我所说,你正在定义具有android:background属性的屏幕背景.我看到你也在那里定义了一个TextView,我怀疑你正在尝试在那里定义内容/列表项,这根本不需要.

这是您编辑的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="#FFFFFF">

    <ListView 
        android:id="@android:id/list" android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
        <!-- REMOVED TEXT VIEW, AND KEEPING BACKGROUND WHITE -->
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

最后,最重要的是,设置你的适配器.

setListAdapter(new ArrayAdapter<String>(
            this, R.layout.list_black_text, R.id.list_content, listItems));
Run Code Online (Sandbox Code Playgroud)

注意我们传递给适配器的布局资源R.layout.list_black_text,以及R.id.list_content我们声明的TextView ID.我也将ArrayAdapter更改为String类型,因为它是通用的.

我希望这能解释一切.如果您同意,请接受我的回答.

凌乱但快速修复方法
如果你不想继续进行复杂的布局定义等,你也可以快速修复.

在实例化适配器时声明一个内部类来执行此操作,这里是代码示例:

    ArrayAdapter<String> adapter=new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, listItems){

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view =super.getView(position, convertView, parent);

            TextView textView=(TextView) view.findViewById(android.R.id.text1);

            /*YOUR CHOICE OF COLOR*/
            textView.setTextColor(Color.BLUE);

            return view;
        }
    };

    /*SET THE ADAPTER TO LISTVIEW*/
    setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

  • 不错,但这里有一个简短而直接的解决方案(http://stackoverflow.com/a/8921087/593709). (2认同)

sil*_*_mx 21

  1. 创建样式文件,例如:my_styles.xml并将其保存res/values.
  2. 添加以下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
    <style name="ListFont" parent="@android:style/Widget.ListView">
        <item name="android:textColor">#FF0000</item>
        <item name="android:typeface">sans</item>
    </style>
    
    </resources>
    
    Run Code Online (Sandbox Code Playgroud)
  3. Activity在您AndroidManifest.xmlandroid:theme属性中将您的样式添加到您的定义中,并将您创建的样式的名称指定为值.例如:

    <activity android:name="your.activityClass" android:theme="@style/ListFont">
    
    Run Code Online (Sandbox Code Playgroud)

注意:Widget.ListView来自这里.还检查一下.

  • 我尝试了这个,它改变了标题栏的颜色,而不是列表项的颜色. (2认同)

ald*_*dux 8

我克隆了simple_list_item_1(Alt + Click)并将副本放在我的res/layout文件夹中,list_white_text.xml用以下内容重命名为:

<?xml version="1.0" encoding="utf-8"?>    
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:textColor="@color/abc_primary_text_material_dark"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />
Run Code Online (Sandbox Code Playgroud)

android:textColor="@color/abc_primary_text_material_dark"转化为白我的设备上.

然后在java代码中:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_white_text, myList);
Run Code Online (Sandbox Code Playgroud)