Ich habe ein Spiel mit MonoGame für ein paar Monate entwickelt, und ich habe es vor ein paar Tagen veröffentlicht. Jetzt versuche ich AdMob richtig zu nutzen, damit ich eine kostenlose Lite-Version der App veröffentlichen kann. Ich bin ein Neuling für Android-Layouts, also habe ich keine Ahnung, was ich mache.Wie wird die AdMob-Anzeige am unteren Bildschirmrand in der Android App mit Xamarin/Monogame angezeigt?
Ich konnte eine Anzeige in meiner App anzeigen lassen, nachdem ich im Internet nach Informationen zur Implementierung von AdMob mit MonoGame gesucht habe. Die App wird jedoch immer oben auf dem Bildschirm angezeigt. Ich hatte sehr wenig Glück, irgendwelche Informationen darüber zu finden, die Anzeige mit MonoGame/Xamarin neu zu positionieren.
Hier ist der Code, und zeigt die Anzeige auf dem oberen Rand des Bildschirms funktioniert:
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();
}
}
Dies funktioniert ohne zusätzliche Layouts. Nun, hier ist der Code, den ich von einigen Websites assimiliert haben rund um das Thema:
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();
}
}
Und meine zusätzliche Main.axml Datei:
<?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>
jedoch Wenn ich das ausführe, stoße ich auf die Zeile "SetContentView (Resource.Layout.Main);" in Aktivität1.cs. Visual Studio gibt den Fehler:
Unhandled Exception:
Android.Views.InflateException: Binary XML file line #1: Error inflating class com.admob.android.ads.AdView
Obwohl keine Fehler im Fehlerausgabefenster zu überprüfen sind ... Irgendwelche Hilfe? Im Idealfall möchte ich diese Admob-Anzeige nur am unteren Rand meiner App anzeigen lassen. Vielen Dank!
Die Verbindung ist unterbrochen –