NativeExpressAdView 设置 adSize 以适用于所有尺寸

NativeExpressAdView set adSizeto work on all sizes

我正在我的应用中实施原生快捷广告,但我在设置广告宽度时遇到了问题。虽然高度非常直截了当,但宽度给我带来了麻烦:

我试过这样设置:

   adView.setAdSize(new AdSize((int) (getResources().getConfiguration().screenWidthDp - (getResources().getDimension(R.dimen.margin) / getResources().getDisplayMetrics().density)), 80));

由于广告包含在设置了边距的 LinearLayout 中,我无法使用 FULL_WIDTH 所以我需要在代码中计算宽度。

现在,问题是宽度在所有屏幕尺寸上都不正确,而在某些屏幕上它工作正常,在其他屏幕上我收到类似

的消息

"Not enough space to show ad. Needs 315x80 dp, but only has 310x...."

如何计算宽度以在所有屏幕尺寸上正确缩放并确保广告实际显示?

注意:添加显示在 LinearLayout 中,它可以在常规 activity 布局文件或 ListView 中。

这是因为 AdSize 采用 dp 参数,而您正在将边距转换为像素。

还要注意一些视图(例如 AppCompat 视图)在某些平台上而不是其他平台上添加的任何填充。例如 CardView 为 KitKat 及以下添加 2dp 填充,但没有为 Lollipop 及以上添加填充。