选择ListView项时,更改TextView的字体颜色

Nit*_*ija 8 android android-listview

我通过自定义适配器设置的每个ListView项目中都有一个TextView.TextView XML不在写入ListView XML的同一文件中,我希望当选择任何ListView项时,该特定项的字体颜色应该更改.我也通过定义TextView的不同状态来尝试这一点,即选择,聚焦和按下,但这不能解决我的问题.请为我推荐一些解决方案.这是片段..

一个xml文件中的一个监听视图,例如.file1.xml

<ListView
    android:id="@+id/listView1"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:layout_weight="0.5"
    android:clickable="true" />
Run Code Online (Sandbox Code Playgroud)

和一个TextView在不同的xml ..即file2.xml

<TextView
    android:id="@+id/rowListTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingTop="10dp"
    android:text="@string/app_name"
    android:textColor="@color/file3"
    android:textSize="10sp"
    android:textStyle="bold" />  
Run Code Online (Sandbox Code Playgroud)

res/color文件夹中的文本颜色属性文件,即file3.xml.

<item android:state_selected="true" android:color="@android:color/white"/>
<item android:state_focused="true"  android:color="@android:color/white"/>
<item android:state_pressed="true"  android:color="@android:color/white"/>
<item android:color="@android:color/black"/>
Run Code Online (Sandbox Code Playgroud)

tee*_*pap 22

尝试使用textColor的颜色状态列表.

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#fff"/>
    <item android:state_activated="true" android:color="#fff"/>
    <item android:color="#000" />
</selector>
Run Code Online (Sandbox Code Playgroud)

Android指南没有提及state_activated属性,但它适用于我.


Mas*_*ter 14

在选择器中:

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <item  android:state_activated="true"  android:color="#ff0000" />
    <item android:state_active="true" android:color="#ff0000" />  
    <item android:state_pressed="true" android:color="#ff0000" />
    <item android:state_selected="true" android:color="#ff0000" />
    <item android:state_focused="true" android:color="#ff0000" />
    <item android:color="#000000" />
</selector>
Run Code Online (Sandbox Code Playgroud)

在活动中: myListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

public void onItemClick(AdapterView<?> parent, View view,
                      int position, long id) {
                     pl=position;
                     myListView.setItemChecked(pl, true);
                     adapter.notifyDataSetChanged();
                          .....
Run Code Online (Sandbox Code Playgroud)

item.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="@drawable/selector"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    />
Run Code Online (Sandbox Code Playgroud)

点击它们后,我检查的项目为红色.只有一个检查项目.请享用!


Vip*_*hah 7

以下代码段将为您提供帮助.

listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView <? > adapterView, View rowView,
    int position, long id) {
        TextView textView = (TextView) rowView.findViewById(R.id.rowListTextView);

        textView.setTextColor("Desired Color");

    }
});
Run Code Online (Sandbox Code Playgroud)

当您滚动列表并且所选项目失焦时,我没有包括保留文本颜色等场景.此片段将指导您正确的方向.