2015-06-08 39 views
1

我已經整合了Admob,它正在投放DFP廣告。以下是XML代碼Admob - 沒有足夠空間顯示廣告想要

<?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使用以下碼。 (在Samsung S4 mini設備上以橫向模式運行)

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

我在哪裏弄錯了?

+0

你得到的是以像素爲單位的寬度http://stackoverflow.com/questions/1016896/get-screen-dimensions-in-pixels不是密度獨立像素http://stackoverflow.com/questions/5669747/android-how-使用DIP-density-independent-pixel-in-code –

+0

使用較小的橫幅 – josedlujan

回答

2

沒有足夠的空間顯示廣告。需要720x404 dp,但只有533x404 dp。

但您的設備報告800像素pixels是不一樣的,從而dp根據你的設備的屏幕密度

  • 0.75上LDPI(120 DPI)
  • 1.0 (160 dpi; baseline)
  • 1.5 on hdpi(240 dpi)
  • 2.0 on xhdpi(320 dpi)
  • 在xxhdpi 10
  • 3.0(480 DPI)
  • 4.0 xxxhdpi(640 DPI)

你將計算有多少dp真是報告您的設備,例如具有2.0的屏幕密度:

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

謝謝,這解決了我的問題。 – Tugees

2

我有與NativeExpressAdView相同的問題。我認爲,修正廣告的尺寸寬度並不是一個好主意。我sugger在編程

  1. 第一步要做的事情:得到屏幕的尺寸DP witdh

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

相關問題