【问题标题】:onSingleTapConfirmed invoked also for click on 3-dots action bar button, which cause lot of troubleonSingleTapConfirmed 也为点击三点动作栏按钮而调用,这会造成很多麻烦
【发布时间】:2015-08-12 19:39:24
【问题描述】:

在我的应用程序中,我显示\隐藏 sys-ui,例如导航\状态栏。 我通过使用“onSingleTapConfirmed”事件来做到这一点,并设法在隐藏\显示这些 ui-sys 之间切换:

@Override
public boolean onSingleTapConfirmed(MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            if (sysBarsAreVisible) {
                hideSystemUI();
            } else {
                showSystemUI();
            }
            break;
    }

    return true;
}

这很好用。导航和状态栏按我的预期显示和隐藏。 问题是,当我尝试按下操作栏中的 3dot 按钮 (...) 时,单击事件正在调用并隐藏操作栏和显示的浮动菜单,然后立即消失。

知道如何解决吗?如何识别三点按钮被按下并跳过所有显示\隐藏操作。

谢谢

【问题讨论】:

    标签: android events android-actionbar conflict


    【解决方案1】:

    我通过计算触摸坐标是在视图范围内还是外部解决了类似的问题。

    【讨论】:

      【解决方案2】:

      根据 Adam Fręśko 的回答.. 我在我的代码中添加了以下几行:

      @Override
      public boolean onSingleTapConfirmed(MotionEvent event) {
          Log.d(TAG, "raw Y: " + event.getRawY());
          Log.d(TAG, "bar height: " + actionBar.getHeight());
          switch (event.getAction()) {
              case MotionEvent.ACTION_DOWN:
                  if (event.getRawY() > actionBar.getHeight() * 1.2) {
      
                      if (sysBarsAreVisible) {
                          hideSystemUI();
                      } else {
                          showSystemUI();
                      }
                      return true;
                  }
          }
      
          return false;
      }
      

      我将原始的原始 Y 坐标与操作栏的高度进行比较,以了解用户的操作是否超出了操作栏的范围。 我还在 1.2 中增加了操作栏的高度,以扩展手指大的人的界限:-)。

      完美运行,谢谢!

      【讨论】:

        【解决方案3】:

        更好的方法是在 ACTION_UP 处使用事件,因为 ACTION_DOWN 可以被 ActionBar 使用,从而使 ACTION_UP 不会在您的侦听器中被触发。

        【讨论】:

        • 我试过了,如果你想切换状态+导航栏,ACTION_DOWN 会更顺畅。与 ACTION_DOWN 相比,ACTION_UP 时的交互似乎很难实现。
        • 嗯,那是因为您的视图没有任何其他事件(可能)在这种情况下您会看到 SwapingBars 动画但不会有 onClickActions。希望你理解
        猜你喜欢
        • 1970-01-01
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 2015-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多