必需的XML属性" adSize"失踪

时间:2014-03-26 21:09:52

标签: android admob

启动我的应用时,我收到了“必需的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>

我使用谷歌播放服务库。

16 个答案:

答案 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" />