Проблема Android LayoutParams - всегда наверх - PullRequest
0 голосов
/ 31 января 2011

Я пытаюсь разместить рекламный баннер mobclix в игре cocos2D.У меня есть рекламный баннер, отображаемый поверх представления openGL.Тем не менее, я не могу понять, как разместить его в нижней части экрана, что мы хотим.Пример от mobclix показывает использование LinearLayout с гравитацией, установленной на дно.Я попробовал это в GameActivity, которое является основным действием при запуске:

    adview_banner = new MobclixMMABannerXLAdView(this);
    adview_banner.addMobclixAdViewListener(this);

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    params.gravity = Gravity.BOTTOM;

    this.addContentView(adview_banner, params);

    adview_banner.bringToFront();
    adview_banner.getAd();
    adview_banner.setRefreshTime(30000);

Независимо от того, что я делаю здесь, баннер всегда отображается в верхней части экрана.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2011

OK!Я думаю, что у меня наконец есть это!Эти макеты на первый взгляд сложны программно, но они соответствуют тому, что было в примере с XML.Мне просто нужно было встроить баннер в объект макета и отправить его в конец этого макета.

В основной операции:

    @Override
public void onStart() {
    super.onStart();

    RelativeLayout layout = new RelativeLayout(this);

    adview_banner = new MobclixMMABannerXLAdView(this);
    adview_banner.addMobclixAdViewListener(this);

    RelativeLayout.LayoutParams childParams = new RelativeLayout.LayoutParams(320, 50);
    childParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    layout.addView(adview_banner, childParams);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    this.addContentView(layout, params);

    //adview_banner.bringToFront();
    adview_banner.getAd();
    adview_banner.setRefreshTime(30000);
}

Теперь единственная проблема заключается в том, что я получаюmsgstr "невозможно получить viewWidth после первой ошибки макета" в Logcat из "webcore".А на рекламном баннере появляется сообщение «Произошла ошибка. Нажмите здесь для получения более подробной информации».

Я думаю, что я проконсультируюсь с командой поддержки Mobclix по этому вопросу.

0 голосов
/ 31 января 2011

Использовать абсолютный макет.

    android:layout_width="40px"
    android:layout_marginRight="5px"
    android:layout_height="40px"

и т. Д.

Линейные макеты могут устанавливать гравитацию только для каждого отдельного ребенка.

Было ли это полезно?

...