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 像素,pixels
与 dp
不同,因此根据您设备的屏幕密度
- .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 时遇到了同样的问题。我认为,固定广告尺寸宽度不是一个好主意。我建议以编程方式进行
第一步:获取屏幕的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>
我已经集成了投放 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 像素,pixels
与 dp
不同,因此根据您设备的屏幕密度
- .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 时遇到了同样的问题。我认为,固定广告尺寸宽度不是一个好主意。我建议以编程方式进行
第一步:获取屏幕的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>