启动我的应用时,我收到了“必需的XML属性”adSize“缺失”。这是写在我的智能手机屏幕而不是我的横幅。
我尝试了基于堆栈的不同解决方案(例如xmlns:ads="http://schemas.android.com/apk/res-auto"
而非xmlns:ads="http://schemas.android.com/apk/libs/com.google.ads"
或代替xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
),但它不起作用。
这是我的java代码(一个简单的Hello World,试图实现一个横幅):
package com.example.publicite;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
这是我的xml文件:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/libs/com.google.ads"
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="MyAdUnitId"
ads:loadAdOnCreate="true"
ads:testDevices="TEST_EMULATOR" />
<Button
android:id="@+id/votrescore"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="..." />
</RelativeLayout>
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.publicite"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="13" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity
android:name="com.example.publicite.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
我使用谷歌播放服务库。
答案 0 :(得分:29)
尝试以这种方式更改声明:
<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:adUnitId="YOUR_AD_UNIT_ID"
ads:adSize="BANNER"/>
----编辑----
您也可以尝试以编程方式执行此操作。简单地说,不是AdView
布局项,而是定义LinearLayout
,并按代码执行以下操作:
final AdView adView = new AdView(getActivity());
adView.setAdUnitId("YourId");
adView.setAdSize(AdSize.BANNER);
final LinearLayout adLinLay = (LinearLayout) view.findViewById(R.id.your_defined_linearlayout);
adLinLay.addView(adView);
final AdRequest.Builder adReq = new AdRequest.Builder();
final AdRequest adRequest = adReq.build();
adView.loadAd(adRequest);
答案 1 :(得分:7)
这是一个奇怪的答案。我刚刚重启了我的日食,它盯着工作。这可能对某人有所帮助。
重新启动eclipse或android studio
答案 2 :(得分:5)
我有同样的问题,我用xmlns标签纠正了它。我把两个&#34; xmlns:广告&#34;标签(一个用于&#34; res-auto&#34;在AdView中,另一个用于&#34;工具&#34;在父布局中)。我必须在&#34; res auto&#34;中使用两个标签,在FloatingActionButton中使用xmlns:app,在AdView中使用xmlns:ads:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/fragment_start_margin"
android:background="@drawable/fondo_proyectos"
android:elevation="4dp"
android:gravity="bottom"
android:minHeight="@dimen/toolbar_height">
</android.support.v7.widget.Toolbar>
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/av_bottom_banner"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_inferior_ad_unit_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/av_bottom_banner"
android:fitsSystemWindows="true">
<android.support.design.widget.FloatingActionButton
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/av_bottom_banner"
android:layout_alignParentEnd="true"
android:layout_gravity="bottom|end"
android:layout_marginLeft="@dimen/fab_margin"
android:layout_marginRight="@dimen/fab_margin"
android:elevation="4dp"
android:src="@android:drawable/ic_input_add"
android:tint="@android:color/white"
app:fabSize="normal"
app:srcCompat="@drawable/ic_account_circle" />
<include layout="@layout/proyecto_content" />
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
答案 3 :(得分:2)
我有同样的问题。
我的解决方案:
xmlns:ads=""
更改为
xmlns:ads="http://schemas.android.com/apk/res-auto"
答案 4 :(得分:2)
通过更改名称空间uri为我修复了问题
来自
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
到
xmlns:ads="http://schemas.android.com/apk/res-auto"
答案 5 :(得分:1)
更改如下..删除广告:loadAdOnCreate =“true”
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="MyAdUnitId"/>
检查此链接,它有明确的例子
https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals#play
答案 6 :(得分:1)
当eclipse无法将您的xml与google play库同步,尝试清理项目并重启eclipse时会发生这种情况
答案 7 :(得分:1)
Juste清理您的应用!
构建 - &gt;清洁项目
消息消失。
答案 8 :(得分:0)
在android manifest中添加:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
机器人:主题= “@机器人:风格/ Theme.Translucent”
它解决了我的问题,我希望它会解决你的问题:)
答案 9 :(得分:0)
事实证明, 使用wrap_content
作为大小,因此您需要改为给它一个大小。
我的广告无法正常工作,经过一天的谷歌搜索后,我改变了我的
android:layout_height="wrap_content"
到
android:layout_height="100dp"
它解决了这个问题。
附: "match_parent"
确实有用(我有宽度设置)
答案 10 :(得分:0)
检查DEIVCE_ID_EMULATOR,因为在我的代码中,我有以下代码来自Google的教程:
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
在我的情况下,我在真实的设备上测试它,所以它从来没有出现,但只是给了我一个消息,没有设置adsize。 我跑了一个模拟器,nkn的解决方案完美无缺。
这是我的完整代码: 在主要活动中:
AdView adView = (AdView)findViewById(R.id.adView);
AdRequest adRequest = newAdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
adView.loadAd(adRequest);
和我的XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="@string/UNIT_ID"
ads:adSize="BANNER"/>
</LinearLayout>
现在在您的设备上运行应用程序并检查您的logcat,因为它将显示该行: 我/广告:使用
AdRequest.Builder.addTestDevice("33BE2250B43518CCDA7DE426D04EE232")
to get test ads on this device.
将此ID(不同于您的设备)复制到.addTestDevice,如下所示:
AdView adView = (AdView)findViewById(R.id.adView);
AdRequest adRequest = newAdRequest.Builder()
.addTestDevice("33BE2250B43518CCDA7DE426D04EE232")
.build();
adView.loadAd(adRequest);
这就是我在我的案例中解决这个问题的方法。
希望它有所帮助。
答案 11 :(得分:0)
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adMobBanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111"`enter code here`
android:layout_centerVertical="true" />
答案 12 :(得分:0)
我遇到了同样的错误。但我无法使用固定的答案进行修复。我将xml更改为这样。
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId = "ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>
主要变化是:
xmlns:ads="http://schemas.android.com/apk/res-auto"
和
ads:adSize="BANNER"
。
解决此问题时,我记录了笔记本电脑的屏幕。因此,如果您喜欢视觉插图,可以看到video on YouTube。
答案 13 :(得分:0)
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adUnitId="ca-app-pub-39402560999425544/1033173712"
//您的唯一ID ads:adSize =“ BANNER” />
答案 14 :(得分:0)
按如下所示创建XML文件,并且在将XML设置为XML之后,不要在Java文件中设置AdUnitID和adSize。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111"
ads:adSize="BANNER"/>
</androidx.constraintlayout.widget.ConstraintLayout>
这是要执行的Java代码
MobileAds.initialize(context, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
AdView mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
mAdView.loadAd(adRequest);
答案 15 :(得分:0)
迟到聚会时,您会收到此错误消息,因为您没有在横幅广告的XML代码中使用广告名称空间,应该这样使用。
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
ads:adUnitId="@string/ad_banner_id" />