如果其他孩子在ViewGroup中嵌入了WebView,则无法点击链接

时间:2011-06-20 11:55:16

标签: android android-webview

我有RelativeLayout,其中包含WebViewListView(ListViewContainer是ListView的子类:

public AdListViewContainer(Context context, ServiceLookup lookup, MarketList list, Registry registry, BitmapCache bitmapCache, Utilities utilities, ActionFlipper flipper) {
    super(context);

    mScale = getContext().getResources().getDisplayMetrics().density;
    final int orientation = getResources().getConfiguration().orientation;

    setClickable(true);
    if (orientation == Configuration.ORIENTATION_PORTRAIT) {
        mAd = new WebView(context);
        mAd.setId(1234);
        mAd.setWebViewClient(new AdListWebClient());
        mAd.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                Log.d (TAG, "Inner Event " + event.getAction());
                return false;
            }
        });
        mAd.getSettings().setJavaScriptEnabled(true);

        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);

        lp.addRule(ALIGN_PARENT_BOTTOM, 1);
        addView(mAd, lp);
    }
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
    if (mAd != null) {
        lp.addRule(ALIGN_BOTTOM, mAd.getId());
    }
    mListContainer = new ListViewContainer(context, lookup, list, registry, bitmapCache, utilities, flipper);
    addView(mListContainer, lp);
}

WebView 会显示由Adition生成的广告,基本上是a-tag中的img-tag。

我遇到的问题是广告无法点击。 WebView未收到任何触摸或单击事件。当我删除ListView并且WebView是ViewGroup的唯一子节点时(通过删除最后一个addView调用),广告是可点击的,一切都很好。

ListViewContainerListView的简单子类,包含大量可点击的LinearLayouts。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

好的,我发现了这个问题。 ListView与WebView重叠,这是由使用ALIGN_BOTTOM而不是ABOVE引起的。 D'哦。 HierarchyViewer发现了这一点。

答案 1 :(得分:0)

我为Webview覆盖了OnTouchEvent,并将WebView放在FrameLayout中,填充它,然后将我需要的所有内容放在webview之上。工作得很好!