我有一个包含TextView的Android LisView,用于显示列表中的数据,
在添加完之后,我将其更改为Webview,除了setOnClickListener不再响应之外,其他一切看起来都不错。
我已经阅读了有关Webview的内容,发现不支持setOnClickListener,而是在那里支持setOnTouchListener
一种使用与Android WebView中的setOnClickListener相同功能的方法?
像这样:
myWebView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//do it ..
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢 (:
为什么不使用您所说的 onTouch 侦听器?
myWebView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个解决方案:
public class ClickableWebView extends WebView {
private static final int MAX_CLICK_DURATION = 200;
private long startClickTime;
public ClickableWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ClickableWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ClickableWebView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
startClickTime = Calendar.getInstance().getTimeInMillis();
break;
}
case MotionEvent.ACTION_UP: {
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
if(clickDuration < MAX_CLICK_DURATION) {
super.performClick();
}
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
备注:
WebView(例如:超链接)内部的任何事件OnClickListener通过onClick在xml或Java中添加感谢Stimsoni回答如何在onTouchEvent()中区分移动和单击?