首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Admob广告无法在屏幕方向上正确调整大小[包括图片]

Admob广告无法在屏幕方向上正确调整大小[包括图片]
EN

Stack Overflow用户
提问于 2014-01-05 12:12:33
回答 2查看 3.2K关注 0票数 4

我在我的应用程序中使用Admob做广告,我遇到了一个问题。每当我将屏幕转到横向模式时,广告就会出现,但它的大小与纵向模式相同。这个问题是在我将清单中的xml声明添加到我的主活动中后发生的,这是保持应用程序的主要部分顺利运行所必需的:

代码语言:javascript
复制
android:configChanges="orientation|keyboardHidden|screenSize"

我在我的广告中使用了智能横幅的尺寸:

代码语言:javascript
复制
ads:adSize="SMART_BANNER"

我附上了这个问题的图片:

我必须做什么才能让广告在不删除的情况下在横向模式下正确调整大小

代码语言:javascript
复制
android:configChanges="orientation|keyboardHidden|screenSize"  

在我的主要活动清单中吗?

EN

回答 2

Stack Overflow用户

发布于 2014-05-22 14:54:56

我是这样解决这个问题的:

代码语言:javascript
复制
@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        orientation_changed = true;
        renewAd();
    }

    private void renewAd() {
        AdView ad = (AdView) findViewById(R.id.adView); 
        LayoutParams lp = (LayoutParams) ad.getLayoutParams();
        // change relative layout for your layout which contains the adView
        RelativeLayout parent = (RelativeLayout) ad.getParent();
        parent.removeView(ad);      
        AdView newAd = new AdView(this, AdSize.SMART_BANNER, "YOUR ID");
        newAd.setId(R.id.adView);
        newAd.setLayoutParams(lp);      
        parent.addView(newAd);      
        newAd.loadAd(new AdRequest());
    }

问候

票数 8
EN

Stack Overflow用户

发布于 2015-04-08 21:28:16

与其他响应一致(但更新为当前AdMob SDK -v7.5-,并提供完整代码),activity的onConfigurationChanged()方法需要包含对广告视图的销毁和创建:

代码语言:javascript
复制
// Remove the ad keeping the attributes
AdView ad = (AdView) myactivity.findViewById(R.id.adView);
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ad.getLayoutParams();
LinearLayout parentLayout = (LinearLayout) ad.getParent();
parentLayout.removeView(ad);

// Re-initialise the ad
ad.destroy();
ad = new AdView(parent);
ad.setAdSize(com.google.android.gms.ads.AdSize.SMART_BANNER);
ad.setAdUnitId(myactivity.getString(R.string.banner_ad_unit_id));
ad.setId(R.id.adView);
ad.setLayoutParams(lp);
parentLayout.addView(ad);

// Re-fetch add and check successful load
AdRequest adRequest = new AdRequest.Builder()
    .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
    .addTestDevice(parent.getString(R.string.test_device_id))
    .build();
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20929963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档