如何在android的webview上获取onclick事件?

我想知道用户何时单击webview而不是超链接。单击后,我想显示/隐藏包含网络视图的活动视图。有什么建议吗

我查看了一下,发现WebView似乎不会向OnClickListener发送单击事件。如果有人能证明我错了,或者告诉我为什么,那么我很想听听

我发现WebView会将触摸事件发送给OnTouchListener。它确实有自己的onTouchEvent方法,但我似乎只使用该方法获得了MotionEvent.ACTION\u MOVE

因此,考虑到我们可以在已注册的触摸事件侦听器上获取事件,剩下的唯一问题是,当用户单击URL时,如何规避您希望对触摸执行的任何操作

这可以通过一些花哨的处理程序步法来实现,方法是发送一条延迟的触摸信息,然后在用户单击URL导致触摸时删除这些触摸信息

下面是一个例子:

公共类WebViewClicker扩展了活动实现OnTouchListener、Handler.Callback{
私有静态final int单击\u WEBVIEW=1;
私有静态final int单击URL=2;
私有最终处理程序=新处理程序(此);
私有网络视图;
私有WebViewClient;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.web\u view\u clicker);
webView=(webView)findviewbyd(R.id.web);
setOnTouchListener(这个);
client=新的WebViewClient(){
@{shouldURL公共字符串重写
handler.sendEmptyMessage(单击URL上的);
返回false;
} 
}; 
setWebViewClient(客户端);
webView.setVerticalScrollBarEnabled(false);
webView.loadUrl("http://www.example.com");
}
@凌驾
公共布尔onTouch(视图v,运动事件){
if(v.getId()==R.id.web&event.getAction()==MotionEvent.ACTION\u向下){
handler.sendEmptyMessageDelayed(单击Web视图上的,500);
}
返回false;
}
@凌驾
公共布尔句柄消息(消息消息消息){
如果(msg.what==点击URL){
移除消息(单击Web视图上的);
返回true;
}
如果(msg.what==点击网络视图){
Toast.makeText(此“WebView已单击”,Toast.LENGTH.SHORT).show();
返回true;
}
返回false;
}
}

发表评论