Admob - 没有足够的空间来展示广告需求

时间:2015-06-08 17:20:33

标签: android admob

我已整合了投放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>

然后,我会在加载广告之前明确设置广告尺寸,以确保有足够的空间。我还确保左侧和右侧都没有填充

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();

我在哪里弄错了?

2 个答案:

答案 0 :(得分:2)

  

没有足够的空间来展示广告。需要720x404 dp,但只有533x404   DP。

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

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

您将计算实际报告设备的dp的数量,例如屏幕密度为2.0:

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

答案 1 :(得分:2)

我遇到了与NativeExpressAdView相同的问题。我认为,修复广告的尺寸宽度并不是一个好主意。我打算用编程方式做

  1. 第一步:获取屏幕的dp大小

    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); //float dpHeight = displayMetrics.heightPixels / displayMetrics.density; dpWidth = displayMetrics.widthPixels / displayMetrics.density;

  2. 2.第二步:

    如果您的布局中没有边距或填充

    mAdView.setAdSize(new AdSize((int) dpWidth, 150));

    否则

    mAdView.setAdSize(new AdSize((int) dpWidth-sumofpadding, 150));