2013-04-12 18 views
7

私はMonoGameで数ヶ月間ゲームを開発していましたが、数日前にリリースしました。今、私はAdMobを正しく動作させるようにしていますので、アプリの無料ライト版をリリースすることができます。私はAndroidレイアウトの初心者なので、何をしているのか分かりません。Xamarin/MonogameでAndroidアプリの画面下部にAdMob広告を表示するにはどうすればよいですか?

MonoGameでAdMobを実装する方法についてウェブを精査した後、アプリ内に広告を表示することができましたが、アプリは常に画面の上部に表示されます。 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(); 


     } 
    } 

これは、追加のレイアウトなしで動作します。

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広告を取得したいと思います。ありがとう!

答えて

2

これはadmobを追加するためのコードです。私はそれがコード

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

これは私のための仕事である以下の追加のonCreateメソッドでは、あなたのため

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

とあなたの活動の仕事かもしれないが、成功しています。詳細について、あなたはAdMobのサイトを訪問することができます

1

溶液#2
コーディングなしの簡単な方法は、ちょうど

のAndroidManifest.xml adView要素への応用要素とads:loadAdOnCreate="true"にのxmlnsを追加することです
0

これはあなたにとってはうまくいくはずです。問題なくこの方法で使用しています。

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(); 


    } 
} 
関連する問題