gpt4 book ai didi

android - 在不禁用 Web View 的超链接和按钮的情况下删除默认选择

转载 作者:行者123 更新时间:2023-11-30 02:27:09 25 4
gpt4 key购买 nike

我正在使用 btwebview 获取文本选择并处理它。问题是当我将 longPress 与 gestureDetector 一起使用时,默认选择也会启动,如果我重写 onTouchEvent 并返回 true,问题就解决了,但我无法单击 webview 上的任何按钮或突出显示的链接,因此我无法访问脚注或视频插入到 webview 中,shouldOverrideUrlLoading 停止调用。

  public void init(Context context) {
System.out.println("BTWebview init");
this.context = context;
this.getSettings().setJavaScriptEnabled(true);
gestureScanner = new GestureDetector(this);
this.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
System.out.println("event "+event.toString() );
return gestureScanner.onTouchEvent(event);
}
});

setInitialScale(100);
addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

}

@Override
public boolean onTouchEvent(MotionEvent event) {
System.out.print("on touch event "+ event.toString());
return true;
}

@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
System.out.println("gesture listener onLongPress");

mSelection = true;
if(!this.isInSelectionMode()){
System.out.println("onLongClick in selection mode");
mSelection = true;
}

this.loadUrl("javascript:android.selection.longTouch();");
mScrolling = true;
System.out.println("onLongClick");

}

最佳答案

webview 停止响应触摸的原因是因为该功能是在父类(super class)的 onTouchEvent 中实现的。

因此,要使其再次运行,您需要在 onTouchEvent 中的某处调用 super.onTouchEvent(event)。显然,只要始终调用它,您就会回到起点。

要实现您想要执行的操作,您需要仅在您尚未检测到该事件为长按事件时调用 super.onTouchEvent。执行此操作的最简单方法是存储 onLongPress 中传递的 MotionEvent 的指针 ID(您应该能够假设它将是索引 0 处的指针因为根据定义,长按是一次触摸事件)。

一旦你有了这个,你的 onTouchEvent 可能看起来像这样

@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getPointerId(0) != self.lastLongPressPointerId) {
return super.onTouchEvent(event);
}
return true;
}

您可能还需要监视与指针相关的 ACTION_UP 和 ACTION_CANCEL 事件,并在此之后停止寻找它,以防系统决定重用指针 ID。

关于android - 在不禁用 Web View 的超链接和按钮的情况下删除默认选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27797426/

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