问题标签 [contextual-action-bar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
572 浏览

android - 当我单击硬件后退按钮并且键盘不在时,上下文 ActionBar 隐藏

我正在使用上下文操作栏进行编辑,当我显示键盘并且我想通过按下硬件后退按钮来隐藏它时,它隐藏了键盘,但它也取消了上下文操作栏,我真的找不到方法继续。

任何人?

0 投票
1 回答
691 浏览

android - 选择句柄未出现在 WebView (Android 4.0-4.3)

我创建了一个自定义ActionMode.Callback,以便在WebView. 它在 Android 4.4 中运行良好,但在 4.1-4.3 中,选择句柄没有出现。我仍然可以对突出显示的单个单词执行自定义操作,但由于缺少句柄,无法更改选择。

此外,当ActionMode被销毁时,选择不会从屏幕上清除。相反,如果用户在其他地方点击以清除选择,ActionMode则不会破坏。

我什至不确定这clearFocus()是我应该调用的方法来尝试删除选择。我评论了那条线,4.4 中的行为没有改变;它仍然完美无缺。

可以做些什么来解决这些问题?


这是我目前的实现:

0 投票
5 回答
1446 浏览

android - 从上下文操作栏中删除标题

我想删除为上下文操作栏中的标题分配的视图。

这是我要删除的

请注意,我不想设置标题;我想要View完全消失。这是为了留出更多空间,以便操作可以显示在菜单栏上,而不是被放到溢出菜单中。

另请注意,我不想设置android:showAsAction="always". 我希望 Android 决定图标有多少空间。我只是希望通过删除为标题保留的空白区域来获得更多空间。

更新

我尝试过的事情:

  • ActionMode.setCustomView(null)
  • ActionMode.setTitleOptionalHint(true)
  • ActionMode.setTitle("").

不幸的是,这些都没有奏效。


更新 2

事实证明,我想要的结果不可能以我尝试的方式实现。删除标题不会为更多图标留出空间;Android 根据设备屏幕大小设置硬限制。如果您想在菜单中添加更多图标,请参阅@adneal 提供的答案。

如果您实际上有一个标题(如下所示)并且想要删除它,那么您可以调用ActionMode.setTitle(""),正如@CommonsWare 在接受的答案中提供的那样。

带有标题的菜单示例

0 投票
1 回答
3163 浏览

android - Webview 文本选择未清除

我已经ActionMode.CallbackWebView. 我遇到的问题是选择和操作模式状态不匹配。

当我长按时,一切开始都很好。

长按后,选择突出显示与上下文操作栏一起出现。

当我与其中一个按钮或WebView(不包括实际选择)交互时,ActionMode应该销毁,并且选择应该消失。

选择一个按钮,或在选择区域外触摸。 CAB 应该关闭,并且选择应该消失。

在 Android 4.4 KitKat 中,这正是发生的情况。


但是,这不是 4.1.1 - 4.3,Jelly Bean 中发生的事情。当我单击其中一个按钮时,不会删除选择。

点击上下文操作栏中的按钮。 点击按钮后,选择仍然存在。

当我在选择之外点击时,会发生相反的情况。选择被删除,但上下文操作栏仍保留在屏幕上。

选择开始后点击 <code>WebView</code>。 选择被清除,但上下文操作栏仍然存在。


这是我的代码CustomWebView

正如上面的评论所示,我认为问题出在clearFocus()方法上。当我删除该方法时,按下按钮会在 4.4 中留下选择,就像 Jelly Bean 中的行为一样。clearFocus()给出了 4.4 中的预期行为,但没有转移到早期的 API。(请注意,这clearFocus()对 KitKat 来说并不新鲜;它自 API 1 以来一直在 Android 中。)

如何解决这个问题?

0 投票
0 回答
1194 浏览

android - 选择 ListView 中的所有项目 - ActionMode

我有一个实现了 ActionMode 功能的 ListView。长按任何列表项会调出上下文动作模式。它具有多选功能。我想要做的是并且无法弄清楚如何通过按一个按钮来选择列表视图中的所有项目。我不确定该怎么做。

按下垃圾桶旁边的按钮(4 个正方形应该突出显示并选择所有列表项 - 胡萝卜、洋葱和希腊酸奶。

这是我的应用程序的屏幕截图

0 投票
1 回答
702 浏览

java - 使用上下文操作栏在操作栏中共享项目

我第一次使用上下文操作栏。当我单击我的 ListView 的项目时,我希望能够以某种方式共享该项目(whatsapp/mail/gmail/drive 等)。我正在尝试使用这种方法,但没有效果:菜单布局:

上下文操作栏类:

好吧,当我长按时它会很好地打开上下文操作栏,但是操作栏中的共享按钮不起作用。当我说“不起作用”时,我的意思是这似乎不可点击。当我单击该项目时,没有任何效果。什么都没有出现。我想要的是打开多种共享方式。谢谢

0 投票
0 回答
301 浏览

java - 上下文操作栏 (CAB) 上的 ShareActionProvider

我在多模式下使用我的列表视图上的上下文操作栏。

在 CAB 的 onCreateActionMode 期间,我初始化了 ShareActionProvider。这是相应的片段:

shareAction 方法:

如果我这样使用它,则 StringBuilder 变量 sb 会更新,但 ShareActionProvider Intent 不会。我尝试使用此处定义的方法:https : //stackoverflow.com/a/16281251/2119391 但是根据文档,onShareTargetSelected 方法不允许对 Intent 进行任何更改:

在选择共享目标时调用。客户端可以在实际执行共享之前决定是否执行某些操作。

注意:不允许修改意图,对后者的任何更改都将被忽略。

注意:您不应该在这里处理意图。此回调旨在通知客户端正在执行共享,因此客户端可以在必要时更新 UI。

由于 onCreateActionMode 方法中的共享意图(以及额外的意图)的初始化,导致在共享时 StringBuilder sb 不是最新的。

我通过非常丑陋(但有效)的代码暂时解决了这个问题:在 MultiChoiceModeListener 的 modeCallback 中调用 onItemCheckedStateChanged 中的共享意图的初始化。

代码片段:

0 投票
1 回答
528 浏览

android - 如何将上下文操作栏添加到对话框

我有几种情况,其中 DialogFragment 中的 GridView 需要上下文菜单。我的项目支持 API 8+,所以我使用的是 appcompat 支持库。到目前为止,我已经尝试在底层 ActionBarActivity 上调用Activity.startSupportActionMode(),但这实际上启动了对话框下方的 Contextual ActionBar/ActionMode 。我正在寻找一种使用 Activity 主题作为 dialog的常见但hacky(和高开销)方法的替代方法。

0 投票
1 回答
1034 浏览

android - 支持上下文操作栏永远不会膨胀

为了使用支持操作栏 v7 库向我的应用程序添加上下文操作栏,我这样实现它:

我的 ActionBarActivity(支持 v7):

我的 contextual_menu.xml :

当我尝试长按一个项目时,我得到了这个堆栈错误:

我不明白为什么上下文菜单不显示...

- 编辑 -

问题是由于在我的自动生成的主题中覆盖了关闭图标......我只需要评论这一行:

0 投票
0 回答
404 浏览

android - 防止 CAB 在 EditText 文本选择中显示

我试图阻止在 EditText 中选择文本时显示标准的上下文操作栏,同时保留文本选择功能。(因为我想使用自定义视图来复制、剪切和粘贴)

我浏览了网页,并尝试了以下事情,但没有运气,现在不知道该怎么办。

  • 我尝试覆盖 onLongClick() 并返回 false,这会阻止 CAB 显示。但也禁用文本选择,所以这不是一个解决方案。

  • 我尝试设置 setCustomSelectionActionModeCallback(null),它根本没有效果。

  • 我尝试使用自定义 ActionModeCallback 设置 setCustomSelectionActionModeCallback(),其中包含方法 onCreateActionMode(),其中我返回 false 以“中止模式”,但不幸的是,这也禁用了文本选择功能。

  • 我什至尝试扩展 EditText 并覆盖 startActionMode() 并将 null 传递给超级,如下所示,但这只是让它崩溃。

.

出现以下错误