2011-07-03 62 views
14

我有一個問題,設置我的視圖以編程方式對齊屏幕的底部。基本上我只想把我的admob廣告放在屏幕底部。我不能用XML來做,因爲它會更麻煩。現在我已經獲得廣告的工作,並手動將其添加到RelativeLayout,但默認情況下它出現在屏幕的頂部。我試圖使用重力命令,但無法使其工作。Android查看對齊底部(以編程方式)沒有XML

下面的代碼片段:

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

誰能幫助我嗎?

+0

你有沒有想出解決辦法?我有同樣的問題 – zezba9000

回答

8

的廣告添加到RelativeLayout的用的LayoutParams如下:

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

,而不是僅僅

rl.addView(adView); 

祝你好運! :)

+0

嘿,非常感謝您的快速答案,但不知何故,它不會工作。我一直在「addRule」這一行收到nullpointerexception +應用程序崩潰。 – Nam

+0

我不確定,但也許這是因爲您在程序中動態創建RelativeLayout ...如果您已經在xml文件中定義了RelativeLayout,並且您通過id引用了rl,它將起作用。無論如何,祝你好運! :) – dragonfly

27

蜻蜓的答案爲我工作。 下面是完整的代碼片段參考

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

什麼是MySurfaceView?你能把你的代碼給我嗎? –

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