2017-01-28 10 views
0

Я добавил баннер Admob для сцены в своем приложении, используя пример: https://forums.xamarin.com/discussion/51779/cocossahrp-and-admob.Размещение баннера Admob в нижней части экрана

Объявление отображается в верхней части экрана, но я хочу отобразить его внизу. Я не нашел ни одного примера CocosSharp, но я нашел его для cocos2d-x (последний пост): http://discuss.cocos2d-x.org/t/admob-bottom-placement-tutorial-v3-0/13854/11

Я пробовал это с моим кодом (см. Ниже), но не могу заставить его работать. Что-то, что я заметил, это если я изменяю LayoutParams от 200 до size.Y рекламный баннер появляется в середине экрана, а не сверху, но это происходит даже тогда, когда AlignParentBottom или Gravity.Bottom не используется.

Использование RelativeLayout с AddRule:

 Android.Graphics.Point size = new Android.Graphics.Point(); 
     prActivity.WindowManager.DefaultDisplay.GetSize(size); 
     RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
      size.X, 
      200); 
     var bannerAd = new AdView(prActivity); 
     bannerAd.AdSize = AdSize.SmartBanner; 
     bannerAd.AdUnitId = "ca-app-pub-3940256099942544/6300978111"; // Test UnitId 
     bannerAd.LayoutParameters = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent); 
     var lcRequestbuilder = new AdRequest.Builder(); 
     bannerAd.LoadAd(lcRequestbuilder.Build()); 
     adParams.AddRule(LayoutRules.AlignParentBottom); // Rule to place ad at the bottom 
     prActivity.AddContentView(bannerAd, adParams); 

     ScheduleOnce(t => 
     { 
      bannerAd.BringToFront(); 
     }, 3f); 

Используя LinearLayout с гравитацией:

 Android.Graphics.Point size = new Android.Graphics.Point(); 
     prActivity.WindowManager.DefaultDisplay.GetSize(size); 
     LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(
      size.X, 
      200); 
     var bannerAd = new AdView(prActivity); 
     bannerAd.AdSize = AdSize.SmartBanner; 
     bannerAd.AdUnitId = "ca-app-pub-3940256099942544/6300978111"; // Test UnitId 
     bannerAd.LayoutParameters = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent); 
     var lcRequestbuilder = new AdRequest.Builder(); 
     bannerAd.LoadAd(lcRequestbuilder.Build()); 
     adParams.Gravity = GravityFlags.Bottom; // Gravity Flag to place ad at the bottom 
     prActivity.AddContentView(bannerAd, adParams); 

     ScheduleOnce(t => 
     { 
      bannerAd.BringToFront(); 
     }, 3f); 

ответ

0

Я использую AdMob объявлений таким образом в моем приложении, и это работа для меня (Объявление в внизу экрана):

private static final String AD_UNIT_ID = ""; 
private AdView adView; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(getWindowManager().getDefaultDisplay().getWidth(), (getWindowManager().getDefaultDisplay().getHeight() + getWindowManager().getDefaultDisplay().getHeight()) - 100); 
     adView = new AdView(this); 
     adView.setAdSize(AdSize.BANNER); 
     adView.setAdUnitId(AD_UNIT_ID); 
     adView.setBackgroundColor(Color.TRANSPARENT); 
     addContentView(this.adView, adParams); 

    } 

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