[英]Add event OnClickListener in dynamically Linear layout in android
[英]Android - Linear Layout default onClickListener that delegates clicks?
我有一个 Map 视图,其中包含某些位置的一些引脚,每当按下某个位置时,都会显示底部的 LinearLayout 弹出窗口。
每当用户点击 map 而不是弹出窗口时,弹出窗口就会被关闭。
我们有一个错误,即每当单击弹出窗口时,它也会被关闭,可能是因为该事件被委托给第一响应者视图,即 map。
但是,不知何故,通过设置。 pupup.setOnClickListener(null)
修复了该问题,并且不再委托单击事件。
我当然不明白这其中的逻辑,弹出窗口没有来自 XML 或代码的任何侦听器,并且通过调试hasOnClickListeners()
解析为false
所以我不明白为什么通过再次将其设置为null
会删除任何委托。
对此有何见解?
发生这种情况是因为基础View.setOnClickListener
将视图转换为clickable ,无论您设置还是删除OnClickListener
/**
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}
删除不需要的委托的更好方法是调用
popup.setClickable(true)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.