You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中代码设置AdMob Banner广告ID并结合XML布局报错求助

解决AdMob Banner的“Required XML attribute ‘adSize’ was missing”错误

这个问题我之前也碰到过,核心原因是当你在XML布局中声明AdView组件时,AdMob的库会在布局加载(inflation)阶段检查必填属性adSize是否存在——哪怕你之后打算用代码动态设置这个属性,也绕不开这个检查。下面给你两种可行的解决办法:

方法一:在XML中补充必填属性(推荐方案)

最符合Android开发规范的做法是直接在XML里指定adSize和adUnitId属性,之后如果需要动态修改,依然可以通过代码调整。修改后的XML代码如下:

<com.google.android.gms.ads.AdView 
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111"/>

对应的Java代码可以简化成只加载广告即可(如果不需要动态修改属性的话):

AdView mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);

方法二:完全通过代码创建AdView

如果你坚持不在XML中写广告相关属性,可以直接在Java代码里创建AdView实例并添加到布局中,这样就能绕开XML的属性检查。

首先在XML中准备一个容器布局:

<LinearLayout
    android:id="@+id/ad_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"/>

然后在Java代码中创建并配置AdView:

// 1. 创建AdView实例
AdView mAdView = new AdView(this);
mAdView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
mAdView.setAdSize(AdSize.SMART_BANNER);

// 2. 设置布局参数并添加到容器
LinearLayout adContainer = findViewById(R.id.ad_container);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
);
mAdView.setLayoutParams(params);
adContainer.addView(mAdView);

// 3. 加载广告
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);

内容的提问来源于stack exchange,提问作者Robertelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:09:23