微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – GridView中的Facebook原生广告:MediaView显示灰色矩形

我将Facebook原生广告整合到GridView中.目前,我展示了测试广告.除播放视频的播放器外,它的工作正常.

如果用户不与GridView交互,MediaView播放视频就好了.
滚动GridView时,当广告重新出现在屏幕上时,视频会暂停并恢复.

向上和向下滚动网格几次后,MediaView不再显示视频,只显示一个灰色矩形.

出于好奇,当MediaView为灰色时,我试图在我的设备上运行Ui Automatic Viewer.我注意到一些有趣但我无法理解的东西.

在View层次结构中,我可以看到带有一些子FrameLayout的GridView(适配器给出的Views的容器).这包括原生广告和其他观看次数.

但是当MediaView为灰色时,其FrameLayout不会出现在View层次结构中!但它在屏幕上呈现得很好!

我对所见所闻感到非常困惑.

此外,当我将这些广告集成到RecyclerView中时,我没有遇到这个问题(或者至少没有注意到它).

我们来谈谈代码吧.我有一个引用指向Facebook原生广告视图.

建议欢迎:)

以下是为GridView提供视图的适配器的代码

public class AdapterGridgallery extends BaseAdapter implements AdListener {

    private static int POSITION_AD = 4;
    private Listgallery fragmentgallery;

    View facebookAdView;
    private NativeAd facebookNativeAd;
    private boolean nativeAdSet = false;

    public AdapterGridgallery(Fragmentgallery fragment,int height) {
        heightViews = height;
        fragmentgallery = fragment;
        facebookNativeAd = new NativeAd(fragment.getContext(),"my_tag");
        facebookNativeAd.setAdListener(this);
        facebookNativeAd.loadAd();
    }

    public void updateData(Listarams params = (AbsListView.LayoutParams) facebookAdView.getLayoutParams();
                    params.height = heightViews;
                    params.width = AbsListView.LayoutParams.MATCH_PARENT;
                    facebookAdView.setLayoutParams(params);
                }

                viewQuizz = facebookAdView;
                viewQuizz.setTag(0);

                if (facebookNativeAd.isAdLoaded()) {
                    if (!nativeAdSet) {
                        Log.d("NativeAdList","update views resources");
                        nativeAdSet = true;

                        ImageView nativeAdIcon = (ImageView) facebookAdView.findViewById(R.id.native_ad_icon);
                        TextView nativeAdTitle = (TextView) facebookAdView.findViewById(R.id.native_ad_title);
                        TextView nativeAdBody = (TextView) facebookAdView.findViewById(R.id.native_ad_body);
                        MediaView nativeAdMedia = (MediaView) facebookAdView.findViewById(R.id.native_ad_media);
                        TextView nativeAdSocialContext = (TextView) facebookAdView.findViewById(R.id.native_ad_social_context);
                        Button nativeAdCallToAction = (Button) facebookAdView.findViewById(R.id.native_ad_call_to_action);


                        nativeAdSocialContext.setText(facebookNativeAd.getAdSocialContext());
                        nativeAdCallToAction.setText(facebookNativeAd.getAdCallToAction());
                        nativeAdTitle.setText(facebookNativeAd.getAdTitle());
                        nativeAdBody.setText(facebookNativeAd.getAdBody());
                        // Downloading and setting the ad icon.
                        NativeAd.Image adIcon = facebookNativeAd.getAdIcon();
                        NativeAd.downloadAnddisplayImage(adIcon,nativeAdIcon);
                        // Download and setting the cover image.
                        nativeAdMedia.setNativeAd(facebookNativeAd);
                        nativeAdMedia.setAutoplay(true);
                        facebookNativeAd.registerViewForInteraction(facebookAdView);
                        nativeAdCallToAction.setVisibility(View.VISIBLE);
                    } else {
                        Log.d("NativeAdList","views resources already set");
                    }
                } else {
                    Log.d("NativeAdList","nativeAdCallToAction is set invisible");
                    nativeAdCallToAction.setVisibility(View.INVISIBLE);
                }
                break;
            case 1:
                view = new CustomView();
            }
            return view;
    }

    @Override
    public void onError(Ad ad,AdError adError) {
    }

    @Override
    public void onAdLoaded(Ad ad) {
        notifyDataSetChanged();
    }

    @Override
    public void onAdClicked(Ad ad) {

    }
}

这是Ui Automator Viewer的截图.

enter image description here

最佳答案
如你所说

when I integrated these ads in a RecyclerView,I didn’t have this
problem (or at least didn’t notice it).

我认为回收站视图对您来说非常合适.然后,不要尝试在gridview中重做同样的事情,只需使用LayoutManager将Recycler视图转换为grid or list.

原文地址:https://www.jb51.cc/android/430027.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐