我在网上查了N多文章, 结果发现,在ANDROID自带的APIDEMO中,居然有Contextual Action Mode的例子, 真是踏破铁鞋无觅处,得来全不费工夫啊!!
这个东东很有意思, 比如在一个ListView中,当长点击某个item时, 在android的header部分会出现一个勾,旁边显示有多少项已被选择。 这个功能比较适合用于数据的batch操作。
1. 先在需要使用该功能的activity或ListFragment里创建一个callback类,执行ListView.MultiChoiceModeListener.我是使用在ListFragment中,如果要在Activity中执行,将getActivity()的方法替换成XXActivity.this即可。
private class ModeCallback implements ListView.MultiChoiceModeListener {
// 设置一个menu,menu显示在header的最右边,在左边,显示这个menu的标题:被选择的项目,然后使用setSubtitle方法显示被选择了多少项。
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// 在Activity中,比如Activity的名称叫MyActivity
// MenuInflater inflater = MyActivity.this.getMenuInflater();
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.list_select_menu, menu);
mode.setTitle("被选择的项目");
setSubtitle(mode);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return true;
}
// 当点击menu中的菜单项时,运行自定义的操作, 此处只显示一些提示信息。
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.share:
Toast.makeText(getActivity(), "Shared " + getListView().getCheckedItemCount() +
" items", Toast.LENGTH_SHORT).show();
mode.finish();
break;
default:
Toast.makeText(getActivity(), "Clicked " + item.getTitle(),
Toast.LENGTH_SHORT).show();
break;
}
return true;
}
public void onDestroyActionMode(ActionMode mode) {
}
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id, boolean checked) {
setSubtitle(mode);
}
private void setSubtitle(ActionMode mode) {
final int checkedCount = getListView().getCheckedItemCount();
switch (checkedCount) {
case 0:
mode.setSubtitle(null);
break;
case 1:
mode.setSubtitle("选择了1项");
break;
default:
mode.setSubtitle("选择了" + checkedCount + "项");
break;
}
}
}
2. 在Activity中调用这个类, 一般是在create的时候调用
。。。。。。
ListView lv = getListView();
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
lv.setMultiChoiceModeListener(new ModeCallback());
。。。。。。
3. 备注:menu/list_select_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/share"
android:title="Share"
android:icon="@android:drawable/ic_menu_share"
android:showAsAction="always" />
</menu>
分享到:
相关推荐
而`Contextual Action Mode`是`ActionBar`的一种扩展,它为用户提供了一种选择并处理多个相关项目的方式,常用于列表或网格视图。在本篇文章中,我们将深入探讨`Contextual Action Mode`的使用方法以及它如何增强...
在Android应用开发中,上下文菜单(Context Menu)和上下文操作模式(Contextual Action Mode)是两种常见的用户交互设计,它们提供了在特定情境下对数据进行操作的界面。这两种设计模式在处理列表、网格或其他可选元素...
此外,ActionBar还可以通过菜单项的上下文动作模式(Contextual Action Mode)来处理多选操作,进一步增强用户体验。 ### 六、总结 ActionBar是Android应用中一个强大且灵活的组件,它不仅提供了美观的界面,还...
在Android开发中,自定义操作栏(Contextual Action Bar,简称CAB)是一个常见的需求,它允许开发者为特定视图或选择集提供上下文相关的操作。`Contextual_Action_Bar`项目正是为此目的而设计的,它展示了如何在Java...
在Android开发中,Action Mode是一种特殊类型的Contextual Action Bar(上下文操作栏),它为用户提供了一种临时的、与特定视图或数据集相关的操作方式。Action Mode通常出现在长按或者选择模式下,比如在列表或网格...
Action Mode是Android中一种特殊的Contextual Action Bar(上下文操作栏),常用于在特定视图或选择项上提供临时的操作选项。下面我们将详细探讨这个主题,以及如何通过源码学习和定制Action Mode。 一、Action ...
在Android开发中,`MyMenuActionMode.zip`这个压缩包可能包含了一个自定义的菜单Action Mode的示例项目。Action Mode是Android系统提供的一种模式,它允许用户在短时间内执行一些临时的操作,通常与上下文相关的操作...
6. **Action Bar和Contextual Action Bar**:在多选模式下,可以使用Contextual Action Bar(CAB)来展示用户可以对选中条目执行的操作,如“删除”或“复制”。创建一个Action Bar样式的菜单,然后在长按事件的回调...
在Android应用开发中,情景模式(也称为场景模式或Contextual Mode)是一种为用户提供特定功能集或界面定制的方法,以适应不同的使用环境或用户需求。这个"Android设置情景模式源码"是一个很好的学习资源,适合那些...
长按事件在ListView中的应用通常用于触发上下文操作菜单(Contextual Action Bar)或者简单的删除操作。通过注册`OnItemLongClickListener`,当用户长按列表项时,可以执行相应的逻辑,例如弹出确认对话框或直接删除...
data with random seeking" test mode and only occurs with some specific test settings. Release 5.3 build 1024 WIN32 release 10 July 2008 - Workaround for the rare crash bug in Vista in atklumdisp....