我今天收到了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) {}
});