Articles of contextual action bar

导航抽屉打开时隐藏环境操作栏

问题类似于此,除了使用导航抽屉(ND)而不是使用View Pager(VP)这一事实。 我有一个元素列表,当通过长按操作选择一个/多个项目时,它激活上下文操作栏(CAB)。 当ND打开时,我想暂时隐藏CAB并显示基本操作栏,而当它关闭时再次显示带有所选项目的CAB。 该function在ND官方文档 “在抽屉可见时隐藏上下文操作栏”中指定。 到目前为止,我无法在任何地方find如何以一种很好的方式制作它,但我尝试了一种解决方法: ND打开时完成CAB并保存所选项目(如果有)。 当抽屉关闭时,启动启用CAB的操作模式,并从保存的列表中填充所选项目的列表。 Gmail应用程序可以体验我想要实现的一个示例。 提前谢谢您的回答!

OnItemLongClickListener无法在自定义列表视图中使用

我希望在长按自定义列表视图中的项目后显示上下文菜单。 我正在使用ActionBarSherlock 。 尝试使用Toast通知进行调试我发现不会触发Long click事件。 如何解决这个问题? m_vwJokeLayout=(ListView)findViewById(R.id.jokeListViewGroup); m_vwJokeLayout.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { // TODO Auto-generated method stub if(m_vwActionMode!=null) { Toast.makeText(getApplicationContext(), “Inside On Itemlongclick”, Toast.LENGTH_LONG).show(); return false; } Toast.makeText(getApplicationContext(), “Inside On Itemlongclick”, Toast.LENGTH_LONG).show(); m_vwActionMode=getSherlock().startActionMode(m_vwCallback); view.setSelected(true); return true; } }); 声明我的ListView的xml代码如下: 下面给出了自定义ListView View的xml代码:

长按后如何选择ListView项?

我有一个愚蠢的小问题。 我已将ListFragment注册为其自己的ListView OnItemClickListener和OnItemLongClickListener 。 调用onItemClick事件时,将onItemClick的详细信息视图活动的意图,没有问题。 当onItemLongClick事件发生时,我想完成以下事情: 创建一个CAB 保持选中长按项目 码: @Override public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { if(this.cabMode != null) return false; this.cabMode = getActivity().startActionMode(editModeCallback); view.setSelected(true); return true; } 然而,CAB将显示选择不会留在项目中。 一些点点滴滴,如果它们是相关的:我已经读过关于通过调用view.requestFocusFromTouch()或使用listView.setItemChecked()修复此问题,但这对我不起作用。 此外,列表项的视图是从自定义布局实例化的,但没有附加任何自定义事件侦听器。 任何帮助表示赞赏。 谢谢!

如何调用ActionBar的类似ContextMenu的行为?

在Android 3.0中,当您选择一些文本时,ActionBar会切换到类似ContextMenu的模式,这使您可以使用所选文本执行操作:复制/共享/等,左侧显示“完成”按钮使用户能够离开此模式。 如何在我的应用程序中将ActionBar切换到此模式(当然还有我的菜单项)? 我在文档中找不到这个。

进入上下文操作模式时更改状态栏颜色

我有一个应用程序使用主题属性(colorPrimaryDark)为Android v21 +上的状态栏着色: 这工作正常。 现在,当用户长按列表项并进入上下文操作模式时,我可以使用属性actionModeBackground为CAB栏着色,所以它看起来像这样: 因此操作栏是灰色的,这就是我想要的,但状态栏仍然使用主题深色进行着色 。 我不想那样,我想把它变成深灰色或黑色。 我怎样才能做到这一点? 我没有看到任何可以在这里工作的主题属性。

如何正确处理动作模式“完成”按钮?

可能重复: 如何调用ActionBar的类似ContextMenu的行为? 如何识别是否在ActionMode中单击了“完成”按钮 如何正确处理动作模式“完成”按钮? 我在动作模式下对一个对象执行一些操作,我想通过点击这个按钮来保存结果 – 比如“保存并退出”。 如何在此按钮上发送按键? 我看到的唯一方法是使用标志覆盖onDestroyActionMode(ActionMode模式)方法,在dispatchKeyEvent(KeyEvent事件)中触发以处理它是否由“后退”按钮按下引起。 logcat的: “完成”按下了 10-03 14:31:58.211: D/DESTROY(967): onDestroyActionMode “后退”紧迫 10-03 14:32:01.771: D/DISPATCH(967): Action: 0/n Keykode: 4 10-03 14:32:01.911: D/DISPATCH(967): Action: 1/n Keykode: 4 10-03 14:32:01.911: D/DESTROY(967): onDestroyActionMode 但这看起来并不是一种好的做法。 有什么“好”的解决方案吗? UPD:我知道如何在ActionMode.Callback中调用动作模式和处理动作项事件,但是如何按“完成”按钮来修改它的行为? “后退”按钮和“完成”按钮都会导致ActionMode.Callback的onDestroyActionMode()调用。

上下文动作栏样式

我在上下文操作栏(CAB)上寻找样式信息。 我只需要改变文本的颜色。 从上面可以看出,这是使用标准的Theme.Holo.Light.DarkActionBar主题,所以我只需要将文本颜色设置为白色! 谁能指出我正确的方向?

如何使Contextual ActionMode Bar覆盖appcompat-v7工具栏而不是导航抽屉?

我有一个应用栏和导航抽屉的活动。 应用栏是使用appcompat-v7库版本21 +中的新工具栏类实现的,导航抽屉显示在它前面。 该活动包含一个列表视图,其中包含可以选择的项目,因此我显示了一个上下文操作栏(CAB)。 它是通过调用来启动的: ActionBarActivity.startSupportActionMode(android.support.v7.view.ActionMode.Callback callback) 默认情况下,CAB插入工具栏上方而不是覆盖它; 看起来CAB默认只覆盖真正的ActionBar。 如此答案所示 ,当设置此主题属性时,CAB会正确覆盖工具栏: true 但这也使得CAB覆盖了导航抽屉,根据材料设计规格 ,这是不正确的。 主要的Android设计文档仍然建议在打开导航抽屉时隐藏CAB并在关闭时再次显示它, 这可以用来“修复”问题,但它不应该是必要的。 如上所述,Material设计规范没有指定在导航抽屉打开时应该隐藏CAB,并且因为导航抽屉应该在CAB上打开,隐藏CAB实际上是一种视觉干扰。 有没有办法在CAB前面显示导航抽屉,同时还能覆盖工具栏?

Android兼容性上下文操作栏

在尝试遵循Android设计指南时,我遇到了一个小小的困境。 我希望有一个项目列表,我可以长按几个(多选),然后对它们执行批量操作。 设计指南建议使用Contextual Action Bar,它听起来就像我想到的那样。 问题是,我正在努力保持与API 7的兼容性(由于我的手机目前是2.3.3)。 我正在使用ActionBarSherlock获取其他动作栏的东西,但我似乎无法弄清楚如何启动它以启动上下文操作栏,也没有弄清楚如何在ABS中的ActionBar任意添加按钮。 我看到你可以做标签,所以也许这就是答案,但由于我试图允许多选,我不想拥有正常的模态上下文菜单。

覆盖Android中文本选择(在WebView中)的默认上下文操作栏

我想覆盖现有的默认上下文操作栏(CAB)进行文本选择。 我的意思是,当我在webview上选择了一些文本时,我想用自己的按钮显示我自己的CAB。 我尝试使用Android文档实现CAB。 OnLongClickListener不捕获Web视图中的文本选择事件。 捕获文本选择的事件是什么? 是否可以隐藏默认CAB并在文本选择上显示我的CAB? childWebView.setOnLongClickListener(new OnLongClickListener() { @Override // Called when the user long-clicks on someView public boolean onLongClick(View view) { if (mActionMode != null) { return false; } // Start the CAB using the ActionMode.Callback defined above mActionMode = startActionMode(mActionModeCallback); view.setSelected(true); return true; } });