【问题标题】:Android persistent gridview selector on CABCAB 上的 Android 持久性 gridview 选择器
【发布时间】:2012-07-31 01:17:20
【问题描述】:

我有一个使用自定义适配器的 GridView,该适配器由一个包含图像视图的相对布局组成。我在 gridview 上启用了 MultiChoiceMode 并启用了 CAB(上下文操作栏)。这很好用,但是我很难在选择网格项时如何在网格项周围显示一个持久选择器。我的选择器在初次按下时可以工作,但我还没有找到一种方法可以让它一直持续到项目被取消选择为止。

预期: 用户长按一个项目,该项目被选中,应用程序进入 CAB 模式。当每个项目被按下时,一个紫色框架(由我在 XML 中的选择器语句定义)将出现在每个对象周围,直到它们被取消选择。

结果: 用户长按一个项目,该项目会短暂显示选择器,然后它会消失,并且用户不会收到选择或取消选择项目的视觉反馈,即使它已在代码中注册。

我已经尝试了每一个选择器事件,但似乎没有一个可以处理这个问题。任何解决方法?我有什么遗漏吗?

通过尝试长按 Android 4.0 或 4.1 Gallery 应用程序中的项目来展示我想要实现的一个示例

---> API 15

【问题讨论】:

    标签: java android listview gridview selector


    【解决方案1】:

    尝试修改列表项的布局以具有不同的背景属性:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/listItemRelativeLayout" 
        android:layout_width="fill_parent" 
        android:layout_height="match_parent"
        android:background="?android:attr/activatedBackgroundIndicator">
    
        ...
    
    </RelativeLayout>
    

    该 Android 属性引用了在您调用 listView.setItemChecked(int index, boolean checked) 时使用的选择器,并且由于某种原因它似乎以这种方式工作。

    另外,请验证您是否在列表视图中调用它:

    listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
    

    【讨论】:

    • 工作出色!从 android 源中检索 ressource 元素并将其修改为使用紫色,现在它正是我想要的。谢谢楼主!
    猜你喜欢
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多