我有Android LisView,它包含TextView以显示列表中的数据,
我添加将其更改为Webview,之后一切都看起来不错,除了不再响应的setOnClickListener ..
我已经阅读了Webview,发现不支持setOnClickListener,而是支持setOnTouchListener
在Android WebView中使用与setOnClickListener相同功能的方法吗?
像这样:
myWebView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//do it ..
}
});
谢谢(:
答案 0 :(得分:4)
为什么不像你说的那样使用onTouch监听器?
myWebView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return false;
}
});
答案 1 :(得分:4)
我最终得到了这个解决方案:
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;
}
}
说明:
WebView
内的任何内容(例如:超链接)OnClickListener
即可添加onClick
感谢Stimsoni回答How to distinguish between move and click in onTouchEvent()?