Android Admob 4.3.1 как сделать, чтобы adView показывался поверх экрана?

Я просматривал похожие вопросы, но они больше о том, как заставить рекламу отображаться с этой новой версией Admob, я получаю рекламу для показа, так что это не моя проблема, моя проблема в том, что реклама отображается внизу экран, поэтому, когда приложение расширяет содержимое на экране, реклама исчезает, поскольку она проходит под всем содержимым. мое решение состоит в том, чтобы разместить рекламу поверх экрана, и таким образом, независимо от того, сколько контента на экране, реклама будет видна! Я смог сделать это раньше, когда реклама была встроена в мой xml, но, следуя руководству по admob, вы больше не помещаете его в xml. Итак, как я могу разместить рекламу поверх основного макета? вот код, который я пытался.

    LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
    adView = new AdView(this, AdSize.BANNER, "my code");
    layout.addView(adView);
    AdRequest r = new AdRequest();
    adView.loadAd(r);
    // this is what I try to get it on top of the screen, but is not working
    adView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
    adView.bringToFront();

это все, так как я ничего не сделал с XML, все еще показывает рекламу внизу, так как я могу получить ее в верхней части экрана? Спасибо


person zvzej    schedule 26.03.2012    source источник


Ответы (3)


Ваш код устанавливает гравитацию AdView, но AdView находится внутри LinearLayout. Поместите LinearLayout там, где вы хотите, чтобы он отображался.

person mah    schedule 26.03.2012
comment
Это сработало, я добавил новый пустой LinearLayout поверх всего моего содержимого xml и направил свой код на этот LinearLayout! Благодарность - person zvzej; 27.03.2012

Вот документация о том, как добавить баннер в формате XML в 4.3.1.

Если вы все еще хотите сделать это в коде, попробуйте сделать макет верхнего уровня RelativeLayout и используйте этот код:

adView = new AdView(this, AdSize.BANNER, "my code");
AdRequest r = new AdRequest();
adView.loadAd(r);
RelativeLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,
    RelativeLayout.LayoutParams.FILL_PARENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
layout.addView(adView, params);
person Eric Leichtenschlag    schedule 26.03.2012
comment
Я не проверял этот подход, так как верхняя часть работала, но звучит солидно! Благодарность - person zvzej; 27.03.2012
comment
Без проблем. Я понял, что этот фрагмент кода на самом деле выровняет рекламу по нижней части экрана, а не по верхней. LinearLayout отлично подходит, если вы хотите, чтобы реклама была вверху, потому что вы можете просто разместить рекламу первой, но нет хорошего способа выровнять элемент по нижней части экрана с помощью LinearLayouts. Вот где RelativeLayout (и этот фрагмент кода) вступит в игру. - person Eric Leichtenschlag; 27.03.2012

Когда вы добавляете представление, добавьте его с индексом. Это работает для меня:

layout.addView(adView, 0);
person Paul    schedule 12.01.2014