【问题标题】:ActionMode touch events are passed through to the toolbarActionMode 触摸事件被传递到工具栏
【发布时间】:2015-04-10 17:51:07
【问题描述】:

在我的活动中,我使用带有微调器的 Toolbar(来自 appcompat)而不是标题(在 xml 中定义)。该活动不是ActionBarActivity,所以我不将其用作supportActionBar

When a selection occurs I start the actionMode, which is styled to be above the toolbar.

但是,单击 actionMode 的标题会打开底层微调器的下拉菜单。如何“捕捉” actionMode 标题上的触摸事件以阻止它们传递到工具栏?

【问题讨论】:

  • 您是否为 actionMode 使用自定义样式?
  • 如果你使用AppCompat,那么你必须使用ActionBarActivity, don't you?

标签: android android-toolbar android-actionmode


【解决方案1】:

一个简单的解决方案是在actionMode打开时输入yourspinner.setClickable(false);,在actionMode关闭时输入yourspinner.setClickable(true);

编辑

你也可以尝试覆盖actionModeonActionItemClicked方法返回true

https://developer.android.com/reference/android/support/v7/view/ActionMode.Callback.html#onActionItemClicked(android.support.v7.view.ActionMode, android.view.MenuItem)

【讨论】:

  • 这也是我目前的工作,但我认为这没有必要。
  • @Evripidis Drakos return true 无济于事:/
【解决方案2】:

您可以尝试重载工具栏的 onTouchEvent。如果您的 actionMode 为 true,则将发送 true,并停止 touchEvent 链。

mToolbar.setOnTouchListener(new View.OnTouchListener()
{
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
         return actionMode;
    }
 });

希望对你有帮助。

【讨论】:

  • 认真的吗?没有理智的方法吗? :-(
  • @DanieleRicci 看起来没有...我最终禁用了微调器
  • onTouch 技巧不适用于操作项。我必须结合使用这两个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
相关资源
最近更新 更多