如何在Android中为选定的TextView定义颜色?

时间:2016-06-27 12:09:33

标签: android listview textview listviewitem android-background

我有ListView并为ListView项创建了一个xml文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item_selector_back"
    android:minHeight="?attr/listPreferredItemHeight"
    android:orientation="vertical">

    <CheckedTextView
        android:id="@+id/list_item_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:checkMark="?android:attr/listChoiceIndicatorMultiple"
        android:textColor="@color/list_item_selector_fore" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/list_item_author"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/list_item_selector_fore" />

        <!-- and many more TextView elements -->

    </LinearLayout>
</LinearLayout>

list_item_selector_fore.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/white" android:state_pressed="true" />
    <item android:color="@android:color/white" android:state_activated="true" />
    <item android:color="@android:color/white" android:state_focused="true" />
    <item android:color="@android:color/black" />
</selector>

如您所见,我在根LinearLayout中定义了一次背景。但我必须为每android:textColor="@color/list_item_selector_fore"设置TextView。 我尝试了前景,但没有任何反应。我怎样才能更聪明?

如何看待: two list view items

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,你想要改变TextView中文本的颜色。从你的XML看起来你希望它是onClick因此你可以这样做:

TextView textView = (TextView) findViewById(R.id.myTextView);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setTextColor('set text color here');
            }
        });

编辑:

如果您在ListView中包含这些内容,我建议您实现所需内容的最简单方法是设置OnItemClickListener,然后根据textColor更改OnItemClick ListView listView = (ListView) findViewById(R.id.listView); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView textView = (TextView) view.findViewById(R.id.rowItemTextView); textView.setTextColor('color goes here'); } }); 事件,可能看起来像这样;

Array.forEach

希望这个简短的片段能引导您朝着正确的方向前进。

答案 1 :(得分:0)

如果你想为所有TextView做,最好的方法应该是TextView

的子类
public class CustomeTextView extends TextView{

    public CustomeTextView(Context context) {
        super(context);
        this.setTextColor(R.color.white);  
    }
}