Android - 点击视图覆盖的工具栏

时间:2015-02-13 04:53:44

标签: android

这是我目前的情况:我无法点击工具栏,因为有一个视图重叠它拦截触摸响应。我将扩展:我正在制作音乐应用。在音乐应用程序中,工具栏下方有一个歌曲列表。但是,一旦您单击一首歌曲,面板就会打开并在工具栏上向上滑动并继续进入透明状态栏。附上图片。
现在,显然因为这个视图与工具栏重叠,我实际上无法使用工具栏来处理任何触摸事件。但我需要。我无法移动工具栏下方的视图,因为我的向上滑动面板仅限于工具栏下方而不是重叠它。如果有任何方法可以解决这个问题,请告诉我。我非常感激。

所以,在我目前的情况下,我想也许我能够触摸覆盖工具栏的视图部分并将该数据发送到包含工具栏的视图,以便我可以检测工具栏上的触摸。但是,我无法弄清楚如何做到这一点,或者即使有可能。

我的问题是:如何在另一个视图下方的视图中检测触摸?

以下是图片: 这是歌曲列表:

List of songs

这就是歌曲面板打开的时候(我现在使用老虎的形象播放任何没有艺术品的歌曲): Song panel opened

谢谢!

2 个答案:

答案 0 :(得分:1)

跆拳道? 您希望用户可以触摸当前不可见的工具栏,因为它与另一个视图重叠?什么样的用户会期望这样的用户体验?

我的意思是:

  1. 用户如何知道他可以点击不可见的元素^^
  2. 如果用户神奇地知道他可以点击,他怎么知道他必须点击的确切位置。例如,他也可以点击其中一个工具栏菜单项,但是如果他再点击几个像素,那么他会点击工具栏项1而不是工具栏项2。
  3. 但是,您有三种可能性:

    1. 您可以通过overlappingView.setClickable(false);使重叠视图无法点击。
    2. 您可以使用OnClickListener添加透明视图,该视图与重叠视图上的工具栏具有相同的宽度和高度。在OnClickListener中,您可以简单地调用所需的方法,如onOptionsItemSelected()(伪造所需参数)或使用EventBus进行通信。
    3. 与2.选项类似,添加透明视图,但不是通过从View扩展设置OnClickListener设置OnTouchListener,而是通过调用toolbar.onTouchEvent(motionEvent);将MotionEvent转发到工具栏

答案 1 :(得分:0)

如果您确实想要检测另一个视图下方视图的触摸事件,可以将前景视图的onTouchEvent设置为false。但是,我建议您重新考虑布局,以便将工具栏放在最顶层,以便用户可以看到它,否则他们不知道他们点击了什么。