GridView子项不显示焦点

时间:2011-05-10 11:56:09

标签: android gridview focus

在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将焦点状态传递给其子节点?

1 个答案:

答案 0 :(得分:0)

也坚持这一点。另一种看起来不错的方法是使用边框样式选择器并将其绘制在顶部。