Google Ads MediaView在显示图片时未正确调整高度以适应wrap_content

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Ads MediaView在显示图片时未正确调整高度以适应wrap_content相关的知识,希望对你有一定的参考价值。

我今天收到了来自AdMob的电子邮件说:

更改为原生广告策略:原生广告需要MediaView才能呈现视频或主要图片资源。为了帮助您更轻松地提供更好的广告体验,从10月29日开始,原生广告将要求MediaView呈现视频或主要图片资源。不符合此日期的广告单元将停止投放广告,这可能会影响您的广告收入。

我在我的android应用程序中尝试了这个,删除了使用ImageViewMediaView视频单独处理图像,但我发现MediaView没有根据显示的图像高度调整视图的高度。

在Google的this codelab示例中,使用了MediaView的固定高度和宽度。我不能这样做,因为这个屏幕响应屏幕大小,这将根据设备而改变。可以动态调整图像大小的事实是使用UnifiedNativeAds而不是横幅等预定义广告的主要好处之一。

这就是我需要显示MediaView的方法,使用match_parent作为宽度,使用wrap_content作为高度。

<com.google.android.gms.ads.formats.MediaView
            android:id="@+id/ad_media"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"/>

This is what I am currently getting from the above code

This is what I need and expect it to look like from using wrap_content

在之前我们能够使用ImageView分别渲染图像的情况下,wrap_content值正确地调整了图像的大小。

有人有解决方法吗?如何在不对MediaView的高度进行硬编码的情况下遵循新的Google要求?

我的完整代码可以在我的github上的演示应用程序中找到here

答案
mediaView.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
    @Override
    public void onChildViewAdded(View parent, View child) {
        if (child instanceof ImageView) {
            ImageView imageView = (ImageView) child;
            imageView.setAdjustViewBounds(true);
        }
    }

    @Override
    public void onChildViewRemoved(View parent, View child) {}
});

以上是关于Google Ads MediaView在显示图片时未正确调整高度以适应wrap_content的主要内容,如果未能解决你的问题,请参考以下文章

膨胀类 com.facebook.ads.MediaView 时出错

Google Ads 转化操作未显示

Flutter google_mobile_ads 未显示广告 ID

Google Ads APM显示为空

Flutter google mobile ads 仅在 IOS 上显示测试广告

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