我今天收到了AdMob的电子邮件,内容是:



我在Android应用程序中进行了尝试,删除了使用ImageView对图像的单独处理和使用MediaView对视频的处理,但是我发现MediaView不会根据显示的图像的高度来调整 View 的高度。

在Google的this代码实验室示例中,使用了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) {}
});

10-08 03:23