Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android View align bottom (programmatically) without XML

I got a problem with setting aligning my view programatically to the bottom of the screen. Basically I just want to place my admob advert at the screen bottom. I can't do it with XML because it would be even more troublesome. Right now I already got the advert working, and added it manually to the RelativeLayout, but by default it appears at the top of the screen. I tried to use the gravity command, but couldn't get it working.

Here's the code snippet:

    _glSurfaceView = new CCGLSurfaceView(this);

    adView = new AdView(this, AdSize.BANNER, "a14e04559caea39");
    adView.loadAd(new AdRequest());
    adView.setGravity(Gravity.BOTTOM);

    RelativeLayout rl = new RelativeLayout(this);

    rl.addView(_glSurfaceView);
    rl.addView(adView);     

    setContentView(rl);
    adView.loadAd(new AdRequest());

Can anyone help me out?

like image 913
Nam Avatar asked Jul 03 '11 13:07

Nam


3 Answers

dragonfly's answer worked for me. Here is the complete code snippet for the reference

adView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxxxx");
panel = new MySurfaceView(this);

AdRequest adRequest = new AdRequest();
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);

RelativeLayout rl = new RelativeLayout(this);
RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT);

lay.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

rl.addView(panel);
rl.addView(adView, lay);

setContentView(rl);

adView.loadAd(adRequest);
like image 122
Nir Avatar answered Nov 18 '22 14:11

Nir


RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
 p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId());
like image 36
Abhijit S Avatar answered Nov 18 '22 13:11

Abhijit S


Add the advert to the RelativeLayout with LayoutParams as follows:

RelativeLayout.LayoutParams rparams = (LayoutParams) rl
            .getLayoutParams();
    rparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    ((ViewGroup) rl).addView(adView, rparams);

instead of just

rl.addView(adView);   

Good luck! :)

like image 9
dragonfly Avatar answered Nov 18 '22 14:11

dragonfly