我已整合了投放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();
我在哪里弄错了?
答案 0 :(得分:2)
没有足够的空间来展示广告。需要720x404 dp,但只有533x404 DP。
但您的设备报告 800像素,pixels
与dp
不同,因此根据设备的屏幕密度
您将计算实际报告设备的dp
的数量,例如屏幕密度为2.0:
dp = px / (dpi / 160) = 800/(320 / 160) = 400 dp (404dp)
答案 1 :(得分:2)
我遇到了与NativeExpressAdView相同的问题。我认为,修复广告的尺寸宽度并不是一个好主意。我打算用编程方式做
第一步:获取屏幕的dp大小
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
//float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
dpWidth = displayMetrics.widthPixels / displayMetrics.density;
醇>
2.第二步:
如果您的布局中没有边距或填充
mAdView.setAdSize(new AdSize((int) dpWidth, 150));
否则
mAdView.setAdSize(new AdSize((int) dpWidth-sumofpadding, 150));