gpt4 book ai didi

WebView 中的 Android singleTap/OnClick

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:33 26 4
gpt4 key购买 nike

我正在使用 Html 字符串加载 Web View ,我想在用户点击 Web View 时显示导航按钮,我尝试使用 onTouch 监听器,滚动和点击时会引发触摸事件但是我想捕捉单击/点击事件,而不是滚动事件触摸...,我为 WebView 和 LinearLayout 实现了 SetOnClickListener,它们都不适合我关于此的任何帮助

最佳答案

WebView 不支持 OnClickListener。而且它确实会消耗触摸事件,即使网页上没有发生任何事情,因此祖先 View (如您的 LinearLayout)没有任何机会产生 OnClick 事件。这是非常不幸的。

作为解决方法,我扩展了一个 RelativeLayout 并将我的 WebView 放入其中。在 RelativeLayout 中,我覆盖了 onInterceptTouchEvent 并正在寻找点击事件。如果检测到点击,则使用 performClick() 调用 RelativeLayoutOnClickListener

public class TapAwareRelativeLayout extends RelativeLayout {

private final float MOVE_THRESHOLD_DP = 20 * getResources().getDisplayMetrics().density;

private boolean mMoveOccured;
private float mDownPosX;
private float mDownPosY;

public TapAwareRelativeLayout(Context context) {
super(context);
}

public TapAwareRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

final int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
mMoveOccured = false;
mDownPosX = ev.getX();
mDownPosY = ev.getY();
break;
case MotionEvent.ACTION_UP:
if (!mMoveOccured) {
// TAP occured
performClick();
}
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(ev.getX() - mDownPosX) > MOVE_THRESHOLD_DP || Math.abs(ev.getY() - mDownPosY) > MOVE_THRESHOLD_DP) {
mMoveOccured = true;
}
break;

}
return super.onInterceptTouchEvent(ev);
}

关于WebView 中的 Android singleTap/OnClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5907194/

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