gpt4 book ai didi

Android:当用户在 View 外按下时如何关闭自定义 View

转载 作者:搜寻专家 更新时间:2023-11-01 08:14:52 25 4
gpt4 key购买 nike

我有一个自定义的 View,它由一个按钮和一个在按钮下方动画显示的 View 组成,该按钮包含多选项目的自定义 View 。当用户按下按钮时,我会显示带有项目的“下拉菜单”。当他们在下拉菜单外按下时,我想隐藏“下拉菜单”。我尝试覆盖 onTouchEventonInterceptTouchEvent,但并不总是调用这些。

我查看了 Spinner 的源代码,并注意到 Google 正在使用 Dialog 作为我认为是它的下拉菜单的内容(目前我不知道它是如何定位的) .

有什么方法可以让我的 View 拦截 Window 上的所有触摸事件?

最佳答案

您可以在顶部 ViewGroup 上实现 onTouchListener(例如,在 LinearLayout 或您正在使用的任何设备上)。

然后,确定自定义 View 的位置:如果触摸位置(使用 event.getX()event.getY() 方法)在 View 之外(使用 myView.getTop() 等),然后它可以隐藏它 (myView.setVisibility(View.GONE)。

在任何情况下,它都应该返回 false 以允许子 View 处理触摸。

来自 android 开发指南:

Remember that key events are always delivered to the View currently in focus. They are dispatched starting from the top of the View hierarchy, and then down, until they reach the appropriate destination.

Note: Android will call event handlers first and then the appropriate default handlers from the class definition second. As such, returning true from these event listeners will stop the propagation of the event to other event listeners and will also block the callback to the default event handler in the View. So be certain that you want to terminate the event when you return true.

关于Android:当用户在 View 外按下时如何关闭自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com