14

我使用 ActionBarSherlock 在我的 Android 应用程序中实现 ActionMode。使用 ABS 可以在 API 11 之前构建 ActionMode,但简单的方法是: listView.setMultiChoiceModeListener( new MultiChoiceModeListener() ... 不适用于 API 11 之前的应用程序。有没有人在 API 11 之前构建 Action Mode 上下文菜单的好方法?我想长按一个列表项并启动我可以单击多个项目的动作模式。只需单击一下,我就会显示列表项的详细站点。我使用该registerForContext()方法,但这会进行简单而长按。

有没有人给我一个好的提示。

编辑
我的问题的解决方案如下:在长项目上单击我激活操作模式并将其保存在变量中。在 on item click 方法中,我实现了一个 if-else 语句:

if( actionMode == null )
{
   // open new activity or update second fragment
   showDetails( itemPosition );
}
else
{
   // update ui or close CAB if no item selected
   showCAB( itemPosition );
}

showCAB(position) 方法更新 selectedItem 计数,突出显示项目背景等。

4

2 回答 2

12

好吧,我今天才这样做,感谢那个网站: http: //www.miximum.fr/tutos/849-porting-the-contextual-anction-mode-for-pre-honeycomb-android-apps

基本上,您只需将您的 ListView ChoiceMode 设置为ListView.CHOICE_MODE_MULTIPLE,设置一个onItemClickListener将检查在 ListView 上检查哪些项目并创建一个实现ActionMode.Callback将管理上下文 ActionBar 的私有类。

我让您继续阅读该博文,以查看所有详细信息以及一些代码!

于 2012-07-22T17:01:09.863 回答
5

您还可以查看Google I/O 2012 应用程序。它是开源的,使用 ActionBarSherlock。他们开发了ActionMode相关类的兼容版本,可与 ABS 和 pre-honeycomb 设备一起正常工作。

特别是,看看:

基本上,就像 ABS 一样,它们在可用时使用 ActionMode 的本机实现,并回退到旧设备上的自定义实现。

希望能帮助到你!

于 2013-01-12T18:51:14.263 回答