【问题标题】:Change text color of simple ListView Multiple choice Android更改简单ListView多选Android的文本颜色
【发布时间】:2023-04-09 18:05:02
【问题描述】:

我正在开发一个板球应用程序。我的要求是这样的,如果我选择第 1 队,则必须显示可用国家名称列表,如果我选择国家名称作为印度,则必须显示来自印度的球员名单,并且我从中选择了多个球员。我已经做了一切。但我的问题是我正在使用 android.R.layout.simple_list_item_multiple_choice 来选择玩家。我正在使用简单的列表视图,该列表的背景是黑色图像。而我的listview就是这样的

    <ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="8.5"
    android:cacheColorHint="#00000000" 

     />

现在的问题是 listview 值显示为黑色。我已经有黑色背景图片。并且该值也是黑色的。所以它看起来不太好。如何在不更改自定义适配器的情况下将列表视图值的颜色更改为白色。

这是我的适配器类

 adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,playersName);
    lvview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    lvview.setAdapter(adapter);

【问题讨论】:

    标签: android listview


    【解决方案1】:

    您必须创建自定义TextView 以更改所有ListView items 的颜色,而不是将默认android.R.layout.simple_list_item_multiple_choice 传递给ArrayAdapter 您应该传递自定义列表项XML,它具有不同的TextColor 属性。

    例如,在文件夹Layout下创建custom_list_item.xml:

       <?xml version="1.0" encoding="utf-8"?>
       <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
           android:id="@+id/textView"
           android:layout_width="fill_parent"
           android:layout_height="?android:attr/listPreferredItemHeight"
           android:textAppearance="?android:attr/textAppearanceLarge"
           android:gravity="center_vertical"
           android:checkMark="?android:attr/listChoiceIndicatorSingle"
           android:paddingLeft="6dip"
           android:paddingRight="6dip"
           android:textColor="#FF00FF"
           />
    

    然后将其传递给适配器,如下所示:

         new ArrayAdapter<String>(this, R.layout.custom_list_item, playersName);
    

    已编辑:

    这是我测试过的运行良好的代码。

       lv.setAdapter(new ArrayAdapter<String>(this, R.layout.custom_list_item, playersName));
        lv.setBackgroundColor(Color.BLACK);
        lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        lv.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> p_arg0, View p_arg1, int p_arg2, long p_arg3)
            {
                 my_sel_items = new String("Selected Items");
                    SparseBooleanArray a = lv.getCheckedItemPositions();
                    for (int i = 0; i < a.size(); i++) {
                        if (a.valueAt(i)) {
                            my_sel_items = my_sel_items + ","
                                    + (String) lv.getAdapter().getItem(i);
                        }
                    }
                    Log.v("values", my_sel_items);
            }
        });
    

    列表视图的布局

            <ListView
                          android:id="@+id/android:list"
                          android:layout_marginTop="60dip"
                          android:layout_width="fill_parent"
                          android:layout_height="fill_parent"
                          android:textColor="#000000"
                         />
    

    【讨论】:

    • 它应该可以工作我已经尝试并测试过它并且它也可以工作。
    • 告诉我你是如何尝试实现的?
    • 你能发布一些代码或屏幕截图,这样我就可以了解到底缺少什么。
    • 尝试将您的ListView id 更改为@+id/android:list,然后进行测试。
    • 如果我使用 android.R.layout.simple_list_item_multiple_choice 我能够检查被选中的项目。即,将复选框的颜色更改为绿色(选中)。但是,如果我使用 CheckedTextView,我可以单击列表视图,但复选框不会更改为选中状态
    【解决方案2】:

    styles.xml

        <?xml version="1.0" encoding="utf-8"?> 
        <resources> 
        ...other styles
    

    //添加这个

        <style name="ListFont" parent="@android:style/Widget.ListView">
        <item name="android:textColor">#FFFFFF</item>
        </style> 
    
         ...other styles
    
        </resources>
    

    在布局 xml 中将此属性 style="@style/ListFont" 放到列表视图中

    【讨论】:

    【解决方案3】:

    查看以下代码:

    package com.example.mapsdemo;
    
    import java.util.ArrayList;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.util.SparseBooleanArray;
    import android.view.Menu;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Spinner;
    
    public class MainActivity extends Activity {
    
        ArrayList<String> a = new ArrayList<String>();
    
        private ListView lView;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            fillarray();
            lView = (ListView) findViewById(R.id.listView1);
            lView.setAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_multiple_choice, a));
            lView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    
            lView.setOnItemClickListener(new OnItemClickListener() {
    
                private String my_sel_items;
    
                public void onItemClick(AdapterView arg0, View arg1, int arg2,
                        long arg3) {
                    // List list = new ArrayList();
                    my_sel_items = new String("Selected Items");
                    SparseBooleanArray a = lView.getCheckedItemPositions();
    
                    for (int i = 0; i < a.size(); i++) {
                        if (a.valueAt(i)) {
                            my_sel_items = my_sel_items + ","
                                    + (String) lView.getAdapter().getItem(i);
                        }
                    }
                    Log.v("values", my_sel_items);
                }
            });
        }
    
        private void fillarray() {
            // TODO Auto-generated method stub
            a.clear();
            a.add("a");
            a.add("b");
            a.add("c");
            a.add("d");
            a.add("e");
    
        }
    
    }
    

    您在日志中的结果

    03-26 12:25:06.106: V/values(3301): Selected Items,a
    03-26 12:25:06.810: V/values(3301): Selected Items,a,b
    03-26 12:25:07.466: V/values(3301): Selected Items,a,b,c
    03-26 12:25:08.136: V/values(3301): Selected Items,a,b,c,d
    

    已编辑:

    检查link,您可以在此代码中使用任何字体颜色和列表视图背景颜色。

    【讨论】:

    • 我不是在问这个.. 我希望 listview 文本颜色为白色.. 我该怎么做
    【解决方案4】:

    Luksprog 解决方案是可以接受的,并不困难。但是没有线

    if (position == 1) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多