gpt4 book ai didi

android - 在 webview android 中单击图像时触发操作?

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

我有一个 webview 显示了一些 html 数据,其中包含一些图像和超链接一切正常,当我在 webview 中单击图像时我需要它应该启动一个 Activity 。我找到了一种检测图像的方法网页 View 使用

WebView.HitTestResult

通过使用这个我可以检测 WebView 中的图像,我把它放在 ontouchLisner 中我得到了图像的检测问题是当我滚动 WebView 时,如果我不小心将手指移过图像 Activity 将启动它是因为 ontouchLisner 是否有任何方法可以解决此问题 Activity 应该只在我单击 WebView 中的图像时触发。

我在代码中使用的 on touchlisner

    wv.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
WebView.HitTestResult hr = ((WebView) arg0).getHitTestResult();

switch (arg1.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:

break;

case MotionEvent.ACTION_UP:


if (hr.getType() == 5 || hr.getType() == 8) {
//Detect image in webview
startActivity(new
Intent(MainActivity.this,Other.class));



}
break;

case MotionEvent.ACTION_POINTER_DOWN:
Log.d("-------", "clcik.den");

case MotionEvent.ACTION_POINTER_UP:
Log.d("-------", "clcik.up");
break;

case MotionEvent.ACTION_MOVE:

Log.d("-------", "clcik.movee"+hr.getType());
break;
}

return false;
}
});

最佳答案

当您在 WebView 中单击图像时,您需要打开一个上下文菜单。为此,创建一个自定义 webview 并覆盖其 onCreateContextMenu 方法。因此,无论何时您触摸图像,它都会打开一个菜单项,您可以在该点击上实现您的逻辑。使用此代码可能会对您有所帮助:

    public class CustomWebview extends WebView {
public static final int ID_DO_SOMETHING = 1;


private Context ctx;
public CustomWebview(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.ctx = context;
}

public CustomWebview(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
this.ctx = context;

}

public CustomWebview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
this.ctx = context;

}

@Override
protected void onCreateContextMenu(ContextMenu menu) {
super.onCreateContextMenu(menu);
final HitTestResult result = getHitTestResult();
MenuItem.OnMenuItemClickListener handler = new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
// do the menu action
switch (item.getItemId()) {
case ID_DO_SOMETHING:

// implement your logic here;

break;

default:
break;
}
return true;
}
};

if (result.getType() == HitTestResult.IMAGE_TYPE
|| result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
// Menu options for an image.
// set the header title to the image url
menu.setHeaderTitle(result.getExtra());
menu.add(0, ID_DO_SOMETHING, 0, "Your Method Name").setOnMenuItemClickListener(handler);

}

}

}

关于android - 在 webview android 中单击图像时触发操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26037590/

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