【问题标题】:Android - how to disable long press on Search button (Nexus One)Android - 如何禁用长按搜索按钮(Nexus One)
【发布时间】:2011-01-13 23:22:08
【问题描述】:

Android 文档描述了如何在 Activity 中禁用搜索搜索功能: 公共布尔 onSearchRequested() { 返回假; }

这适用于短按 Nexus One 上的搜索按钮。 但是,它不会禁用长按,它仍然会触发语音搜索。

如何禁用长按语音搜索?

谢谢...

【问题讨论】:

    标签: android search


    【解决方案1】:

    我将 Stan 的答案扩展为仅禁用长按事件。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_SEARCH
            && (event.getFlags() & KeyEvent.FLAG_LONG_PRESS) == KeyEvent.FLAG_LONG_PRESS) {
            return true;
        }
    
        return super.onKeyDown(keyCode, event);
    }
    

    【讨论】:

    • @Styler,通常仅(flags & mask) 就足以满足&& 的要求——为什么在您最近(仍在等待)的编辑中需要(flags & mask) == maskFLAG_LONG_PRESS 是多位掩码,其中一个或多个底层位可能被打开?
    • @sarnold 在我实际执行此操作之前,它没有为我编译 if (keyCode == KeyEvent.KEYCODE_SEARCH && (event.getFlags() & KeyEvent.FLAG_LONG_PRESS) == KeyEvent.FLAG_LONG_PRESS)
    • 我的理解是它在 Java 中是必要的,因为 flags & MASK 是一个 int/long 并且 && 需要一个布尔值。但是,使用(flags & FLAG_FOO) != 0 可能更好,因为它更能抵抗拼写错误(您需要多长时间才能注意到(flags & FLAG_FOO) == FLAG_BAR 总是错误的?)。
    • @Styler,太好了,谢谢。 :) 我在 C 领域的研究时间已经够长了,以至于我早就忘记了 && 需要 bool
    • 我不知道,但是当我单击editText 并重新单击相同的edittext 时,我仍然可以选择剪切复制粘贴。 :-(
    【解决方案2】:

    这对用户来说似乎不是一件好事,但 onKeyDown 可用于禁用 Activity 中的点击和长按搜索,如下所示:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_SEARCH) {
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    

    【讨论】:

      【解决方案3】:

      在 Android 2.0 中,您可以这样做:

      @Override
      public boolean onKeyLongPress(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_CALL) {
              // todo your code here
              return true;
          }
          return super.onKeyLongPress(keyCode, event);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 2021-07-08
        • 1970-01-01
        • 2011-05-22
        相关资源
        最近更新 更多