2013-02-19 16 views
2

我決定在我的應用程序中添加帶有AdMob的SMARTBANNER。 正如從文檔中所述: smart-banners sizes 在Android上,肖像,我保留了50 dp的高度。所以,我只是保留一個空的線性佈局,它爲我工作在過去的應用程序:如何使用SMARTBANNER(AdMob)並確保顯示它

<LinearLayout 
    android:id="@+id/layoutAd" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:orientation="vertical" /> 

然後使用方法:

private void createAdView() { 
     if (C.AD_ON) { 
      ad_view = new AdView(this, AdSize.SMART_BANNER, C.AD_APPLICATION_ID); 
      LinearLayout l = (LinearLayout) findViewById (R.id.layoutAd); 
      l.addView (ad_view); 
      AdRequest a = new AdRequest(); 
      ad_view.loadAd(a); 
     } 
    } 

現在,雖然一般這種簡單的方法的工作原理,在此case我收到錯誤:

Not enough space to show ad! Wants: <480, 90>, Has: <480, 50> 

??? 480x90? 480x50像素的?在前面的表格中我找不到這些尺寸......它們來自哪裏? 無論如何,該廣告不會顯示。

然後,我試着保留90dp而不是50dp,並且廣告正確顯示,留下了一個空格......猜出......約40dp。

在這一點上出現了一個問題:之前,用我以前的應用程序,一切都在手機上運行。我認爲一切都適應不同的屏幕尺寸和密度。現在我很害怕,實際上我的很多廣告都無法顯示,因爲廣告期望的是90dp而不是50dp,或者其他任何數字。

其實我決定放置SMARTBANNER的唯一原因是我認爲沒有這種問題!

現在...我應該怎麼做才能在每個可能的屏幕上正確地工作,併合理地確信它不會在某些密度或某種尺寸上失效?我應該自己檢測一下我正在運行的設備,然後以編程方式保留50,90或者55 dp。這聽起來很荒唐!

是否有像適用於橫幅的某些「WRAP_CONTENT」這樣的功能,以便我不必手動指定90或50像素,而只是期望顯示正確的橫幅並將佈局設置爲適應它?

謝謝。

+0

這是一個奇怪的情況,上面的代碼應該已經工作。你試過什麼設備? – 2013-02-22 00:00:41

回答

3

您是否真的在智能橫幅上試過WRAP_CONTENTlayout_height?這是解決方案和建議的做法。

+0

哦,我的.... 我是一個完全白癡還是什麼?我以爲我已經嘗試過,有些沒有工作,所以我切換到了固定大小。現在我試着回來了,沒有選擇wrap_content沒有真正的理由...... – 2013-02-22 09:46:14

4

如果你想使用固定的高度(而不是使用推薦的WRAP_CONTENT),你必須去爲每個屏幕尺寸提供一個尺寸的路線。我使用以下維度,但要警告,如果smartbanner的實施更改,這些可能會更改。

/values/dimens 
<dimen name="ad_min_height">50dp</dimen> 

/values-land/dimens 
<dimen name="ad_min_height">32dp</dimen> 

/values-large-land-v11/dimens 
<dimen name="ad_min_height">90dp</dimen> 

/values-large-v11/dimens 
<dimen name="ad_min_height">90dp</dimen> 
相關問題