Intereting Posts
Исходный ресурс Android не найден? Поддержка Android (cardView, RecyclerView) в старых версиях с целевым Kitkat GoogleMap V2 загружает карту случайного андроида Как остановить навигацию по ActionBar Tab для отображения в качестве счетчика, когда он становится слишком длинным? Передача перечислений через вспомогательные интерфейсы Инструменты сборки 21.1.2 – НЕОПРЕДЕЛЕННЫЙ ТОП-УРОВЕННЫЙ ИСКЛЮЧИТЕЛЬНЫЙ Phonegap – Android Как настроить макет в полноэкранном режиме, когда видна клавиатура Создать / Войти пользователя с мобильного устройства с помощью Symfony2 и FOSUserBundle Подписание приложения, но не публикация на Android-рынке Разница между getDefaultSharedPreferences и getSharedPreferences Как я могу проверить исходный код Android в ОС Windows? Как импортировать .dll в проект java для Android (работа с eclipse) Получить информацию об AutocompleteTextView из полученного AutoCompleteTextView $ DropDownListView Как определить конечную позицию или угол поворота изображения Диалог пользовательских предупреждений не центрирован по вертикали на Android

Как отобразить объявление AdMob в нижней части экрана в Android-приложении с помощью Xamarin / Monogame?

Я разрабатываю игру с MonoGame в течение нескольких месяцев, и я только что выпустил ее несколько дней назад. Теперь я пытаюсь заставить AdMob работать правильно, поэтому я могу освободить бесплатную облегченную версию приложения. Я новичок в макетах Android, поэтому я понятия не имею, что я делаю.

Я смог отобразить объявление в своем приложении после очистки веб-страниц за некоторую информацию об использовании AdMob с MonoGame, но приложение всегда отображается в верхней части экрана. Мне очень не повезло найти информацию о перепозиционировании объявления специально с 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 в нижней части моего приложения. Благодаря!

Solutions Collecting From Web of "Как отобразить объявление AdMob в нижней части экрана в Android-приложении с помощью Xamarin / Monogame?"

Это код для добавления 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

Решение №2
Быстрый способ без кодирования – просто добавить xmlns к элементу приложения и ads:loadAdOnCreate="true" элементу adView в AndroidManifest.xml

Это должно работать для вас, я использую его таким образом без проблем.

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

Я сделал удобный фрагмент кода в своем блоге. Надеюсь, это поможет следующему человеку с этим вопросом.

http://www.craftworkgames.com/blog/using-admob-with-monogame/