【发布时间】:2011-05-10 11:56:09
【问题描述】:
在一个 android 应用程序中,我有一个 GridView 保存由适配器创建的 TextView。在那些 TextView 中,我添加了一个具有三种状态(按下、选中和默认)的图标。
我用android:listSelector="#00000000" 删除了GridView 的默认选择器,我希望改为显示图标的选定状态。但是虽然按下状态有效(即当 TextView 被按下时,图标的按下版本会显示出来),但被选中的状态却没有。
我已经尝试过这些技巧(在网络上的不同地方找到),但也没有用:
-
设置
android:descendantFocusability="afterDescendants" -
或
android:drawSelectorOnTop="true" -
或(在 TextViews 中)
android:duplicateParentState="true" />
如果我将 TextView 设置为可聚焦,它会独立于 GridView 获得焦点(即,单击它不会调用 GridView onClick 方法...)
图标在 xml 文件中定义如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/ic_flag_bg_pressed"/>
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/ic_flag_bg_pressed"/>
<item android:state_focused="true"
android:drawable="@drawable/ic_flag_bg_selected"/>
<item android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/ic_flag_bg_default"/>
</selector>
有没有办法告诉 GridView 将焦点状态传递给它的孩子?
【问题讨论】: