我无法弄清楚我做错了什么......
我有一个带有自定义layout.xml文件的ListView。在那里,我定义了像这样的TextView
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="foo"
android:textColor="@drawable/listitem_textcolor_selector"/>
listitem_textcolor_selector.xml看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<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>
这种作品。如果我选择一行,它会正确地将文本的颜色更改为红色。唯一的问题是,它不会保持红色。 大约一秒后,该颜色会变回黑色。
这里的主要问题是行的背景将改变它的颜色并且这种颜色将保留,但文本的颜色不会,即使列表项本身的选择器看起来相同(期望颜色)。
有人可以告诉我我错过了什么吗? 任何帮助表示赞赏,因为我不知道如何解决这个问题:)
由于
修改: 也许我还应该指出我正在测试三星Galaxy Tab 10.1平板电脑。我曾经听过一些关于“TouchMode”的事情而不知道天气这会与我的问题有关......
答案 0 :(得分:9)
在listitem_textcolor_selector.xml中添加以下状态:
<!-- Activated -->
<item
android:state_activated="true"
android:color="#ff0000" />
<!-- Active -->
<item
android:state_active="true"
android:color="#ff0000" />
在此之后,所选项目将保持其颜色状态,直到选择其他内容。
希望这会有所帮助。
答案 1 :(得分:4)
我赢了这个问题! 在选择器中:
<?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>
在活动中: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();
.....
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"
/>
点击后我的选中项目为红色。只有一个检查项目。享受!
答案 2 :(得分:1)
我得到了诀窍。如果您为列表项使用自定义xml,则可以更改文本颜色,如:
<强> custom_listitem:强>
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="7dip"
android:paddingBottom="7dip"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@drawable/listitem_textcolor_selector"
/>
现在您必须将此xml名称用于您用于填充列表视图的数组适配器。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_listitem, options);
listView.setAdapter(adapter);
答案 3 :(得分:0)
将listitem_textcolor_selector.xml
保存在color folder of your res
中,然后像这样使用它:android:textColor="@color/listitem_textcolor_selector"