2011-07-03 23 views
14

Tengo un problema con la configuración de alinear mi vista programáticamente en la parte inferior de la pantalla. Básicamente, solo quiero colocar mi anuncio admob en la parte inferior de la pantalla. No puedo hacerlo con XML porque sería aún más problemático. En este momento ya obtuve el anuncio funcionando, y lo agregué manualmente al RelativeLayout, pero de manera predeterminada aparece en la parte superior de la pantalla. Traté de usar el comando de gravedad, pero no pude hacerlo funcionar.Android Vista alinear abajo (mediante programación) sin XML

He aquí el fragmento de código:

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

¿Puede alguien ayudarme?

+0

¿Alguna vez resolver esto? Estoy teniendo el mismo problema – zezba9000

Respuesta

8

añadirlo a la RelativeLayout con LayoutParams de la siguiente manera:

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

en lugar de sólo

rl.addView(adView); 

Buena suerte! :)

+0

Hola muchas gracias por las respuestas rápidas, pero de alguna manera no va a funcionar. Sigo obteniendo una nullpointereception + la aplicación falla, en la línea "addRule". – Nam

+0

No estoy seguro, pero tal vez sea porque estás creando un RelativeLayout dinámicamente dentro del programa ... si tienes un RelativeLayout ya definido en un archivo xml y te refieres a rl por ID, funcionará. Buena suerte de todos modos! :) – dragonfly

27

La respuesta de libélula funcionó para mí. Aquí es el fragmento de código completo para la referencia

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

¿Qué es MySurfaceView? ¿podrías enviarme tu código? –

9
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId()); 
0
ImageButton buttonAdvance = new ImageButton(this); 
    RelativeLayout.LayoutParams params = new  RelativeLayout.LayoutParams(160, 160); 
    params.leftMargin = 5; 
    params.bottomMargin = 4; 
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    buttonAdvance.setLayoutParams(params); 
Cuestiones relacionadas