我有一个ListView,每行有两个Webview并排,占据了整个行.我在ListActivity中设置了onListItemClick(),但是当我点击其中一行时,它们不会被触发(除非我碰巧点击的地方在webview的边框之外 – 但这不太可能是行为,用户最多可能想要点击webview中的图像).
我已经尝试设置setFocusable(false)和setFocusableInTouchMode(false),但这些没有帮助.
理想情况下,这将像Facebook的新闻源一样运行,您可以在其中点击某人的墙上信息的个人资料图片,并且其效果好像您已经点击了整个行(在FB中为墙上的文本的文本)
解决方法
想出来,发布我的解决方案,以防其他人想要做类似的事情:
我不得不使用OnTouchListener,因为OnClick和OnFocus不工作.我扩展了一个可重用的类:
private class WebViewClickListener implements View.OnTouchListener { private int position; private ViewGroup vg; private WebView wv; public WebViewClickListener(WebView wv,ViewGroup vg,int position) { this.vg = vg; this.position = position; this.wv = wv; } public boolean onTouch(View v,MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_CANCEL: return true; case MotionEvent.ACTION_UP: sendClick(); return true; } return false; } public void sendClick() { ListView lv = (ListView) vg; lv.performItemClick(wv,position,0); } }
可以覆盖sendClick方法,以便在特定情况下执行所需的操作.用例:
WebView image = (WebView) findViewById(R.id.myImage); image.setOnTouchListener(new WebViewClickListener(image,parent,position));