设置NativeAd竖屏宽高比后仅视频广告生效,图片广告异常求助
解决方案:原生图片广告强制竖屏宽高比
1. 先搞懂API的实际作用
setMediaAspectRatio(MediaAspectRatio.PORTRAIT)这个配置只对视频广告有强制约束,对图片广告来说,它只是个给AdMob的请求偏好,实际返回的广告还是要看平台的可用库存,所以没法单靠这个API让图片广告都变成竖屏。
2. 手动给图片加布局约束
加载到原生广告后,直接给图片视图设置固定的竖屏宽高比,比如常用的9:16或3:4:
// 拿到加载好的原生广告后处理图片视图 NativeAd nativeAd = ...; // 已加载完成的原生广告实例 ImageView mediaView = (ImageView) nativeAd.getMediaContent().getImageView(); if (mediaView != null) { // 以9:16竖屏比例为例,适配你的布局容器 ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mediaView.getLayoutParams(); params.dimensionRatio = "9:16"; mediaView.setLayoutParams(params); // 加个缩放模式避免图片拉伸变形 mediaView.setScaleType(ImageView.ScaleType.CENTER_CROP); }
3. 过滤不符合比例的广告
如果必须严格只展示竖屏图片,加载后先检查图片实际宽高比,不符合就直接弃掉请求下一条:
@Override public void onNativeAdLoaded(NativeAd nativeAd) { MediaContent mediaContent = nativeAd.getMediaContent(); if (mediaContent != null && mediaContent.hasImage()) { AdImage adImage = mediaContent.getImage(); float aspectRatio = (float) adImage.getHeight() / adImage.getWidth(); // 这里设定竖屏阈值,比如大于1.5就是3:5及以上的竖屏比例 if (aspectRatio < 1.5f) { nativeAd.destroy(); loadNextNativeAd(); // 调用你的广告加载方法请求新广告 return; } } // 符合要求再展示广告 showNativeAd(nativeAd); }
4. 检查AdMob后台配置
登录AdMob后台找到你的原生广告单元,看看有没有开启竖屏素材筛选:
- 进入广告单元设置页
- 在「广告素材选项」里找宽高比筛选,勾选竖屏相关选项(不同地区后台界面可能有差异)
内容的提问来源于stack exchange,提问作者Shailendra Pratap Singh
相关产品推荐
相关产品推荐

