Android WebView里面的ListView onclick事件问题

我有一个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));

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...