我有一个包含TextView的Android LisView,用于显示列表中的数据,
在添加完之后,我将其更改为Webview,除了setOnClickListener不再响应之外,其他一切看起来都不错。
我已经阅读了有关Webview的内容,发现不支持setOnClickListener,而是在那里支持setOnTouchListener
一种使用与Android WebView中的setOnClickListener相同功能的方法?
像这样:
myWebView.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //do it .. } });
谢谢 (:
我最终得到了这个解决方案:
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
在xml或Java中添加
不干扰滚动手势
感谢Stimsoni回答如何在onTouchEvent()中区分移动和单击?