2015-06-08 2 views
1

У меня есть Admob, который служит DFP-объявлениям. Вот код XMLAdmob - недостаточно места, чтобы показывать рекламу

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

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- to-use-dip-density-independent-pixel-in-code –

+0

Используйте небольшие баннеры – josedlujan

ответ

2

Не достаточно места, чтобы показать объявление. Требуется 720x404 дп, но имеет только 533x404 дп.

но устройство сообщает 800 пикселей, pixels не то же самое, как dp так, на основании плотности экрана устройства

  • .75 на ldpi (120 точек на дюйм)
  • 1.0 на MDPI (160 точек на дюйм; базовый)
  • 1.5 на ИПЧР (240 точек на дюйм)
  • 2.0 на xhdpi (320 точек на дюйм)
  • 3,0 на xxhdpi (480 точек на дюйм)
  • 4,0 на xxxhdpi (640 точек на дюйм)

вы подсчитать, сколько dp действительно отчетности устройства, например, с экрана Плотность 2,0:

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

Спасибо, это решает мою проблему. – Tugees

2

У меня была такая же проблема с NativeExpressAdView. Я думаю, не стоит исправлять ширину объявления. Я sugger сделать в программном

  1. Первый шаг: получить размер дп экрана семе 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));

Смежные вопросы