2

我想弄清楚如何更改文本颜色android.R.layout.simple_list_item_multiple_choice

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

我在这里遇到了这个问题,但我不明白如何使用投票最多的答案。

如何覆盖android.R.layout.simple_list_item_multiple_choicetextview 以便更改它的颜色。谢谢你。

4

3 回答 3

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");
            }
        };

如果您使用的是自定义适配器,那么您还可以覆盖相同的 getView() 方法,并且可以根据您的要求对其进行自定义。

于 2015-05-26T11:51:52.223 回答
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

于 2015-05-26T12:50:56.317 回答
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 将允许在单击时更新文本的颜色。您可以添加相应的逻辑来显示文本的颜色。

于 2016-01-01T16:22:45.707 回答