Contextual Action Mode
实现ActionMode.Callback接口,在接口内配置ActionMode并响应action items的点击事件。在需要显示ActionMode时调用startSupportActionMode()方法。
两种基本的设计:
1.对个体任意views的上下文相关操作;
调用View的setOnLongClickListener方法。
实现OnLongClickListener接口,在接口内调用startSupportActionMode()方法。
2.对一组数据的批处理,比如ListView或GridView中的项目,允许用户选择多个项目然后对它们整体执行一个动作。
public class MainActivity extends ActionBarActivity { private ListView mListView = null; private String[] mStrings = { "a", "b", "c", "d" }; private ActionMode mActionMode = null; private ArrayAdapter<String> Adapter0, Adapter1; //设置ActionMode菜单 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Adapter0 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings); Adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, mStrings); mListView = (ListView) findViewById(R.id.listView1); closeEditor(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_edit) { if (mActionMode != null) { return false; } //startSupportActionMode mActionMode = startSupportActionMode(mActionModeCallback); return true; } return super.onOptionsItemSelected(item); } //ActionMode.Callback private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.cab, menu); return true; } //预处理 @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { //设置适配器 mListView.setAdapter(Adapter1); //设置监听器 mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); //设置选择模式——多选 mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); return true; } //点击处理 @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.action_multiple_choice: showEditor(); //关闭ContextualActionMode mode.finish(); return true; default: return false; } } //销毁处理 @Override public void onDestroyActionMode(ActionMode mode) { mActionMode = null; closeEditor(); } }; private void showEditor() { //得到选中的itemId long[] ids = mListView.getCheckItemIds(); String str = ""; for (int i = 0; i < ids.length; i++) { str += ids[i] + ","; } //输出ID Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show(); } private void closeEditor() { //设置适配器 mListView.setAdapter(Adapter0); //设置监听器 mListView.setOnItemClickListener(new OnItemClickListener() { // onItemClick @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //得到选中的itemId String ids = id + ""; //输出ID Toast.makeText(MainActivity.this, ids, Toast.LENGTH_LONG) .show(); } }); //设置选择模式——单选 mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); } }
自定义样式:
使用方法同ActionBar相同,这里只给出样式属性。
"android:actionModeStyle "——ActionMode样式。
"android:actionModeBackground"——ActionMode背景。
"android:actionModeSplitBackground"——分割时底部背景(同ActionBar)。
"android:actionModeCloseButtonStyle"——取消按钮样式(就是那个对号)。
Android2.3模拟器效果图
相关推荐
而`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....