Android LayoutParams Problem - View always up top

kstrat2001 picture kstrat2001 · Jan 31, 2011 · Viewed 7.7k times · Source

I'm trying to put a mobclix ad banner in a cocos2D game. I have the ad banner showing up on top of the openGL view. However, I can not figure out how to place it at the bottom of the screen which is what we want. The example from mobclix shows the use of a LinearLayout with gravity set to bottom. I tried this in the GameActivity which is the main activity on startup:

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

No matter what I do here the banner always shows up on the top of the screen. Any help would be greatly appreciated.

Answer

kstrat2001 picture kstrat2001 · Feb 1, 2011

OK! I think I finally have it! Those layouts are tricky at first programmatically but they do match up with what the example had in the xml. I just needed to embed the banner in a layout object and send it to the bottom of that layout.

In the main Activity:

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

Now the only issue is that I get a "can't get the viewWidth after the first layout error" on the Logcat from "webcore". And the ad banner displays "An error has occurred. Click here for more details."

I think I'll consult the Mobclix support team on that one.