9

MonoGame を使用して数か月間ゲームを開発しており、数日前にリリースしたばかりです。現在、AdMob を正しく動作させて、無料のライト バージョンのアプリをリリースできるようにしています。私は Android レイアウトの初心者なので、自分が何をしているのかわかりません。

MonoGame を使用した AdMob の実装に関する情報を Web で探したところ、アプリ内に広告を表示することができましたが、アプリは常に画面の上部に表示されます。MonoGame/Xamarin を使用した広告の再配置に関する情報はほとんど見つかりませんでした。

動作するコードは次のとおりで、画面の上部に広告を表示します。

Activity1.cs:

public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
    {
        internal View adView = null;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            Game1.Activity = this;
            var g = new Game1();
            FrameLayout fl = new FrameLayout(this);
            fl.AddView(g.Window);
            adView = AdMobHelper.CreateAdView(this, "<my id here>");
            var layoutParams = new ViewGroup.LayoutParams(Android.Views.ViewGroup.LayoutParams.FillParent, Android.Views.ViewGroup.LayoutParams.WrapContent);

            fl.AddView(adView, layoutParams);
            SetContentView(fl);
            AdMobHelper.RequestFreshAd(adView);
            g.Run();


        }
    }

これは、追加のレイアウトなしで機能します。さて、これがトピックをカバーするいくつかのWebサイトから吸収したコードです。

Activity1.cs:

public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
    {
        internal View adView = null;

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            Game1.Activity = this;
            var g = new Game1();
            SetContentView(Resource.Layout.Main);
            View gameView = FindViewById(Resource.Id.GameView);
            ViewGroup parent = (ViewGroup)gameView.Parent;
            int index = parent.IndexOfChild(gameView);
            parent.RemoveView(gameView);
            parent.AddView(g.Window, index);
            adView = FindViewById(Resource.Id.Ad);
            parent = (ViewGroup)adView.Parent;
            index = parent.IndexOfChild(adView);
            parent.RemoveView(adView);
            var layoutParams = adView.LayoutParameters;
            adView = AdMobHelper.CreateAdView(this, "<my id here>");
            adView.LayoutParameters = layoutParams;
            parent.AddView(adView, index);
            AdMobHelper.RequestFreshAd(adView);
            g.Run();
        }
    }

そして私の追加の Main.axml ファイル:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <SurfaceView
        android:id="@+id/GameView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
    <com.google.ads.AdView
        android:id="@+id/Ad"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="bottom" />
</FrameLayout>

ただし、これを実行すると、「SetContentView(Resource.Layout.Main);」という行でクラッシュします。Activity1.cs で。Visual Studio で次のエラーが発生します。

Unhandled Exception:
Android.Views.InflateException: Binary XML file line #1: Error inflating class com.admob.android.ads.AdView

エラー出力ウィンドウにチェックするエラーはありませんが...助けはありますか?理想的には、この admob 広告をアプリの下部に表示したいだけです。ありがとう!

4

3 に答える 3

2

これは admob を追加するためのコードです。私は成功しました、それはあなたのために働くかもしれません

<com.google.ads.AdView
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
ads:adSize="BANNER"
ads:adUnitId="Your Admob 15 digit alpha numeric ID"
/>

アクティビティの onCreate メソッドに次のコードを追加します

AdView adview = (AdView)findViewById(R.id.adView);
AdRequest re = new AdRequest();
re.setTesting(true);
adview.loadAd(re);

これは私の仕事です。詳細については、admob サイトをご覧ください。

于 2013-05-04T05:03:55.343 に答える
1

解決策 2
コーディングを行わない簡単な方法は、アプリケーション要素とAndroidManifest.xmlads:loadAdOnCreate="true"adView要素にxmlns を追加することです。

于 2013-11-23T01:27:05.510 に答える
1

これでうまくいくはずです。私はこの方法で問題なく使用しています。

public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity
{
    internal View adView = null;

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        Game1.Activity = this;
        var g = new Game1();
        FrameLayout fl = new FrameLayout(this);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.setGravity(Gravity.BOTTOM);
        fl.AddView(g.Window);
        adView = AdMobHelper.CreateAdView(this, "<my id here>");
        ll.addView(adView);
        fl.AddView(ll);
        SetContentView(fl);
        AdMobHelper.RequestFreshAd(adView);
        g.Run();


    }
}
于 2013-11-23T02:26:19.103 に答える