更改android.R.layout.simple_list_item_multiple_choice的文本颜色

时间:2015-05-26 11:39:01

标签: android android-listview multichoiceitems

我想知道如何更改android.R.layout.simple_list_item_multiple_choice

的文字颜色

我知道您可以使用复选框创建自己的列表视图,但我真的不想这样做,因为android.R.layout.simple_list_item_multiple_choice完美无缺,我只想知道如何更改文本颜色。

我来到了this question here,但我不明白我怎么能用最多的答案。

如何覆盖android.R.layout.simple_list_item_multiple_choice textview,以便我可以更改它的颜色。谢谢。

3 个答案:

答案 0 :(得分:3)

您可以轻松更改颜色。 您只需要覆盖getView()方法。 并在特定视图中膨胀 android.R.layout.simple_list_item_multiple_choice 。现在您可以访问整个模板。 这样您就可以通过使用id android.R.id.text1 查找此模板中使用的TextView。之后,您可以更改textview的行为。

ArrayAdapter<String> list = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, your_data_container) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View v = LayoutInflater.from(InvitationFlowActivity.this).inflate(android.R.layout.simple_list_item_multiple_choice, null);
                TextView tv = (TextView) v.findViewById(android.R.id.text1);
                tv.setTextColor("Your_color");
            }
        };

如果您正在使用custome adapter,那么您也可以覆盖相同的getView()方法,并根据您的要求自定义它。

答案 1 :(得分:2)

只需制作自定义布局 - simple_list_item_multiple_choice.xml就像这样 -

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
    android:textColor="#FF0000"
/>

并使用它代替android.R.layout.simple_list_item_multiple_choice.xml

答案 2 :(得分:0)

有两种方法可以做到这一点。 1.重写getView方法 2.使用自定义布局而不是标准布局。

没有。 2更好,因为你有更多的控制,你可以轻松编辑。 Alt+Click会将所需的布局克隆到res/layout文件夹。 更改新布局并在适配器中使用它。

ArrayAdapter aa = new ArrayAdapter(getApplicationContext(),R.layout.text_change,listItems);
        listView.setAdapter(aa);

这里listItems是列表的String数组。 text_change.xml是更新的布局xml listView是主要布局中的列表视图。

为了动态更新内容的颜色,请使用以下代码

AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener(){
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if(position==0)
                {
                    //Intent intent = new Intent(CoffeeShop.this,DrinkCategoryActivity.class);
                    //startActivity(intent);
                    TextView txtV = (TextView)view;
                    txtV.setTextColor(Color.BLUE);
                }
                else
                {
                    TextView txtV = (TextView)view;
                    txtV.setTextColor(Color.YELLOW);
                    Toast toast = Toast.makeText(getApplicationContext(),(CharSequence)"These Methods are yet to be made public", Toast.LENGTH_SHORT);
                    toast.show();
                }

            }
        };
        ListView listView = (ListView)findViewById(R.id.list_opt);
        listView.setOnItemClickListener(itemClickListener);

为视图添加onclicklistner将允许在单击时更新文本的颜色。您可以添加相应的逻辑,以显示文本的显示颜色。