我有一个包含两个 fragment 的布局。左侧 fragment 是使用 SimpleCursorAdaptor 的 ListFragment,右侧 fragment 填充了有关从左侧 fragment 列表中选择的项目的详细信息。我正在尝试弄清楚如何确保 ListFragment 中的所选项目保持突出显示,直到选择列表中的另一个项目。
经过一些研究,我尝试使用 android:background="@drawable/item_selector"
我可以更改不同状态的颜色,但它们似乎都不会持续存在。我认为 selected 会......在您选择其他项目之前,您选择的项目仍然是所选项目似乎合乎逻辑。
我什至尝试在我的 clickhandler 中使用 v.setSelected(true);
希望它可以保持状态,但这也没有用。
是否有我缺少的状态?我查看了开发文档,似乎没有其他合适的......
item_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:drawable="@color/green" />
<item
android:state_selected="true"
android:drawable="@color/blue" />
</selector>
我不确定还有哪些其他代码可能有帮助,所以请随时询问您认为必要的任何其他代码。
最佳答案
经过进一步研究,答案在 android 文档中(实际上是文档的两部分)。
首先,在触摸模式下没有选择或聚焦状态。
其次,默认情况下, ListView 被设置为无选择模式(意味着列表中的任何项目都不能具有选择状态)。我所要做的就是通过添加以下内容来更改选择模式(它可以是单个或多个,我只需要/想要单个):
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
然后我在选择器 XML 中使用了选择状态(转换为 activated
状态):
<item
android:state_activated="true"
android:drawable="@color/blue" />
在行布局xml文件中应用它作为背景:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="35dp"
android:background="@drawable/item_selector"
android:gravity="center_vertical"/>
我选择的项目现在以蓝色背景显示,直到选择了不同的项目。
请注意,此 (android:state_activated) 需要 Android API 11 或更高版本。
关于android - 维护 fragment 中选定项目的突出显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10023904/