Admob - space 不足以显示广告需求

Admob - Not enough space to show ad wants

我已经集成了投放 DFP 广告的 Admob。这是 XML 代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/headerAdLayout"
    android:paddingLeft="0dp"
    android:paddingRight="0dp">
    <com.google.android.gms.ads.doubleclick.PublisherAdView
               android:id="@+id/adView"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:layout_centerHorizontal="true"
               ads:adUnitId="/4359979/Top"
               ads:adSize="BANNER"
               >

           </com.google.android.gms.ads.doubleclick.PublisherAdView>
</LinearLayout>

然后我在加载广告之前明确设置广告尺寸以确保有足够的 space。我还确保了左边和右边都没有填充

PublisherAdView mAdView = (PublisherAdView) header.findViewById(R.id.adView);
mAdView.setMinimumWidth(720);
mAdView.setMinimumHeight(404);
mAdView.setAdSizes(new AdSize(720, 404));
PublisherAdRequest adRequest = new PublisherAdRequest.Builder().build();
mAdView.loadAd(adRequest);

但是我仍然在 Logcat 中收到此消息:

Not enough space to show ad. Needs 720x404 dp, but only has 533x404 dp.

使用以下代码,我的屏幕宽度被报告为 800。 (我 运行 在三星 S4 迷你设备上处于横向模式)

WindowManager wm = (WindowManager) activity.getSystemService(activity.WINDOW_SERVICE);
 Display display = wm.getDefaultDisplay();
 Point size = new Point();
 int width = display.getWidth();

我哪里弄错了?

Not enough space to show ad. Needs 720x404 dp, but only has 533x404 dp.

但您的设备报告 800 像素pixelsdp 不同,因此根据您设备的屏幕密度

  • .75 on ldpi (120 dpi)
  • mdpi 为 1.0(160 dpi;基线)
  • 1.5 hdpi (240 dpi)
  • 2.0 xhdpi (320 dpi)
  • 3.0 xxhdpi (480 dpi)
  • 4.0 xxxhdpi (640 dpi)

您将计算出有多少 dp 真正报告了您的设备,例如屏幕密度为 2.0:

dp = px / (dpi / 160) = 800/(320 / 160) = 400 dp (404dp)

我在使用 NativeExpressAdView 时遇到了同样的问题。我认为,固定广告尺寸宽度不是一个好主意。我建议以编程方式进行

  1. 第一步:获取屏幕的dp大小 <pre></p> <p>DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); //float dpHeight = displayMetrics.heightPixels / displayMetrics.density; dpWidth = displayMetrics.widthPixels / displayMetrics.density;</p></li> </ol> <p></pre> 2. 第二步:

    如果您的布局中没有边距或填充 <pre></p> <p>mAdView.setAdSize(new AdSize((int) dpWidth, 150));</p> <p></pre>

    其他

    <pre></p> <p>mAdView.setAdSize(new AdSize((int) dpWidth-sumofpadding, 150));</p> <p></pre>