2014-03-07 50 views
1

我已經實現了admob |使用andengine將GoogleMobileAdSDK加入到我的Android遊戲中。廣告正在加載到遊戲中,但在打開應用後第一次無法正確顯示。但是當我離開應用活動時,通過點擊添加或去谷歌播放排行榜並返回到應用程序,然後它開始正確顯示它。 所以基本上,當我打開應用程序的廣告來全寬,但幾乎與半高。如果點擊廣告,則轉到廣告鏈接,然後按下返回按鈕,廣告附帶全寬全高。卡住了3天:/Admob橫幅廣告顯示高度在安卓遊戲中無法正確顯示

public static AdView adView; 
@Override 
protected void onSetContentView() { 

    final FrameLayout frameLayout = new FrameLayout(this); 
    final FrameLayout.LayoutParams frameLayoutLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); 
    adView = new AdView(this); 
    new AdView(this); 
    adView.setAdSize(AdSize.BANNER); 
    adView.setAdUnitId("MY AD UNIT ID"); 
    final FrameLayout.LayoutParams adViewLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_HORIZONTAL); 
    this.mRenderSurfaceView = new RenderSurfaceView(this); 
    mRenderSurfaceView.setRenderer(this.mEngine, this); 

    AdRequest adRequest = new AdRequest.Builder() 
    .addTestDevice("MY EMULATOR ID") 
    .addTestDevice("MY DEVICE ID") 
    .build(); 

    final FrameLayout.LayoutParams surfaceViewLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); 
    frameLayout.addView(this.mRenderSurfaceView,surfaceViewLayoutParams); 
    frameLayout.addView(adView,adViewLayoutParams); 
    this.setContentView(frameLayout, frameLayoutLayoutParams); 

    adView.loadAd(adRequest); 
    Log.d("Ads","AdView banner size is "+adView.getWidth()+" and "+adView.getHeight()); 
    //Creating the banner view. 

} 

此外,我在代碼中提供日誌以查看adview大小。它總是打印本上的應用程序的起始

AdView的橫幅大小是0和0

回答

2

嘗試添加adView給它加載完成後,才frameLayout

adView.setAdListener(new AdListener() { 
    public void onAdLoaded(){ 
     frameLayout.addView(adView, adViewLayoutParams); 
    } 
}); 

如果如果在添加adView之前已將其添加到frameLayout之前,您的廣告可能會更新,或者它會崩潰。

+0

謝謝你。過去3-4天一直卡在它上面。這解決了這個問題。 :) 你可以多說一點清爽嗎?如果我想刷新廣告,我需要做些什麼? –

+0

我的應用程序正在崩潰,因爲你提到和相同的地區。我到底要做什麼來阻止呢?我必須移除視圖並重新添加它,還是可以使用之前的framelayout本身? –

+0

嗨,很高興我能幫上忙。您可以使用之前的frameLayout本身,只需在添加之前檢查adView.getParent是否爲空(這意味着adView未添加到frameLayout),這樣它只會將adView添加到frameLayout一次。我不知道這是否是最好的解決方案,但它的工作原理! – rdromao