Прозрачный макет - не прозрачный на Android 2.3

1

У меня есть прозрачный макет, используемый для размещения рекламы в баннере в моем приложении. Макет сидит поверх моей игровой площадки постоянно, но объявления появляются только время от времени. Код работает следующим образом:

transparent_linearlayout_to_hold_banner.setBackgroundColor(Color.TRANSPARENT);   
game_frame_layout.addView(transparent_linearlayout_to_hold_banner);
setContentView(game_frame_layout);

Когда я хочу, чтобы объявление показывалось, я делаю

transparent_linearlayout_to_hold_banner.addView(adView);

Когда я хочу, чтобы объявление исчезло, я делаю

transparent_linearlayout_to_hold_banner.removeView(adView);

Это отлично работает на моей Галактике S! с 4.0.3, но на моей вкладке Galaxy с 2.3 я обнаружил, что мой transparent_linearlayout_to_hold_banner становится черным, как только появляется надпись, и остается черным навсегда больше, даже когда объявление удаляется.

Любая идея, что происходит?... и как ее исправить?

EDIT: после некоторых экспериментов я решил, что цвет макета не меняется, но альфа-канал. Я предполагаю, что, возможно, SDK баннерной рекламной системы вызывает некоторые функции, чтобы убедиться, что сам баннер не прозрачен, а затем (в зависимости от версии ОС) это имеет побочный эффект от создания родительского макета непрозрачный.

  • 0
    Вы пробовали использовать макет XML и расположить объявление в нужном месте? Таким образом, вы просто делаете его видимым / невидимым при показе и скрытии.
  • 0
    как вы решаете это тогда? У меня похожая проблема.
Теги:
layout

4 ответа

0

некоторые идеи:

вы можете просто удалить линию установки фона в lineraLayout:

transparent_linearlayout_to_hold_banner.setBackgroundColor(Color.TRANSPARENT);   

?

Кроме того, вместо удаления и добавления adView вы можете переключать видимость линейногоLayout (или adView)?

0

попробуйте сделать макет, который вы хотите быть прозрачным в XML, а не динамически. У меня были такие проблемы с динамически добавленным ListView с прозрачными элементами.

У вас здесь игра, поэтому, конечно, то, что я предлагаю, может не работать, или будет трудно сделать, но вы можете использовать FrameLayout, чтобы поместить свой макет, на который вы рисуете, и прозрачный поверх него. Также обратите внимание: в этом случае штрихи будут идти в макет объявления. Это можно предотвратить, но это немного похоже на взлом (я сделал это кстати один раз).

Я не знаю, будет ли это работать, но попробуй.

0

Если вы используете admob, попробуйте последнюю версию 6.0, у нее есть несколько улучшений (как я вижу), контролирующих внешний вид объявления, похоже, больше внимания уделяется атрибутам, описанным в Best Practices: Указание цветов объявлений. У меня была аналогичная проблема с предыдущей версией библиотеки. Тем не менее, он не позволяет альфа-канал, поэтому вы не сможете указать прозрачный фон объявления, но он может решить вашу проблему.

  • 0
    К вашему сведению: я использую GoogleAdMobAdsSdk-6.0.0.jar, и мои объявления обычно графические, а не текстовые.
  • 0
    Тогда используйте 6.0.1;)
Показать ещё 1 комментарий
0

Перед добавлением рекламного баннера попробуйте сделать макет непрозрачным.

Когда вы хотите удалить объявление, снимите рекламный баннер и снова сделайте макет прозрачным.

Повторите попытку добавления этой строки после удаления объявления.

transparent_linearlayout_to_hold_banner.setBackgroundColor(Color.TRANSPARENT);   
  • 0
    Удивительно, но это не сработало. Прозрачный_линейный слой_в_гол_баннера остается черным.
  • 0
    Можете ли вы опубликовать весь файл макета? Вероятно, там есть какая-то проблема?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню