web-dev-qa-db-ja.com

Android-AdViewに必要なXML属性 'adSize'がありません

今日、AdMobのAdViewで問題を解決しようとしたので、頭がほとんど爆発しました。タイトルに記載されているエラーが発生します。私は3ページをグーグルで検索しましたが何もしませんでした。私が何をしても同じエラー。これは私のXMLファイルです:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#FFF"
    Android:orientation="vertical" >

    <ImageView
        Android:id="@+id/imageView1"
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="0.48"
        Android:src="@drawable/butters10" />

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="42dp" >

        <Button
            Android:id="@+id/prev"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentLeft="true"
            Android:layout_alignParentTop="true"
            Android:background="@drawable/prev" />

        <Button
            Android:id="@+id/next"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignParentRight="true"
            Android:layout_alignParentTop="true"
            Android:background="@drawable/next" />
    </RelativeLayout>

    <com.google.ads.AdView
        xmlns:ads="http://schemas.Android.com/apk/libs/com.google.ads"
        Android:id="@+id/adView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        ads:loadAdOnCreate="true"
        app:adSize="BANNER"
        app:adUnitId="------------------------------" >
    </com.google.ads.AdView>

</LinearLayout>

appキーワードをadsに変更しようとしましたが、それでも問題は解決しません。

別のことは、同じ広告を同じunit-idで複数のアクティビティに実際に追加したいことです。私はこのコードを最初のアクティビティxmlファイルに正確に追加しましたが、すべて正常に動作しますが、2番目のアクティビティではまったく機能しません。助けてくれてありがとう.

変化する

xmlns:ads="http://schemas.Android.com/apk/libs/com.google.ads"

xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"

すべてのドキュメントは名前空間を/lib/ではなく/libs/にあると参照しているようです

adsを使用してタグを参照します

<com.google.ads.AdView
    xmlns:ads="http://schemas.Android.com/apk/libs/com.google.ads"
    Android:id="@+id/adView"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    ads:loadAdOnCreate="true"
    ads:adSize="BANNER"
    ads:adUnitId="------------------------------" />
22
Ken Wolf

Google Play開発者サービスで機能させるには、次を使用します。

xmlns:ads = "http://schemas.Android.com/apk/res-auto"

xMLファイル内。

61
Amir Alagic

私の要件は、広告ユニットIDをxmlで指定する代わりに動的に渡すことができることでした。フレームワークはこれらの組み合わせが好きではないことが判明したので、プログラムで広告を100%作成しています。

public class AdMobBanner extends FrameLayout {

private AdView adView;

public AdMobBanner(Context context, AdParams params) {
    super(context);

    adView = new AdView(context);
    FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutParams.gravity = Gravity.CENTER;
    adView.setLayoutParams(layoutParams);
    adView.setAdSize(AdSize.BANNER);
    adView.setAdUnitId(params.getAdUnitId());
    addView(adView);
}

public void showAdvert(AdParams params) {
    AdRequest.Builder builder = new AdRequest.Builder();

    for (String id: params.getTestDevices()) {
        builder.addTestDevice(id);
    }
    adView.loadAd(builder.build());
}

@Override
public void pause() {
    adView.pause();
}

@Override
public void resume() {
    adView.resume();
}

}

AdParamsクラスは私の独自のクラスであり、独自のクラスに置き換えるか、文字列を渡すことができますが、一般的な解決策はこちらに掲載されています。

7
Meanman

「loadAdOnCreate」および「testDevices」XML属性は使用できなくなりました。 Google Play開発者サービスで広告を機能させるには

ここにXMLレイアウトがあります

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
          xmlns:ads="http://schemas.Android.com/apk/res-auto"
          Android:orientation="vertical"
          Android:layout_width="match_parent"
          Android:layout_height="match_parent">
<TextView Android:layout_width="match_parent"
          Android:layout_height="wrap_content"
          Android:text="@string/hello"/>
<com.google.Android.gms.ads.AdView Android:id="@+id/adView"
                       Android:layout_width="match_parent"
                       Android:layout_height="wrap_content"
                       ads:adSize="BANNER"
                       ads:adUnitId="INSERT_YOUR_AD_UNIT_ID_HERE"/>
</LinearLayout>

そしてここにあなたのJavaファイルがあります

package com.google.example.gms.ads.xml;

import com.google.Android.gms.ads.AdRequest;
import com.google.Android.gms.ads.AdView;

import Android.app.Activity;
import Android.os.Bundle;

/**
 * A simple {@link Activity} which embeds an AdView in its layout XML.
 */
public class BannerXMLSample extends Activity {

  private static final String TEST_DEVICE_ID = "INSERT_YOUR_TEST_DEVICE_ID_HERE";

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // The "loadAdOnCreate" and "testDevices" XML attributes no longer available.
    AdView adView = (AdView) this.findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice(TEST_DEVICE_ID)
        .build();
    adView.loadAd(adRequest);
  }
}

ここの例を参照してください https://github.com/googleads/googleads-mobile-Android-examples/tree/master/admob/banner-xml

3
sumitarora