2011-07-03 6 views
14

私のビューをプログラム的に画面の下部に合わせるように設定することに問題がありました。基本的に私はちょうど画面下部に私のadmob広告を配置したい。私はXMLでそれをすることができません。なぜなら、それはさらに面倒なことになるからです。今、私はすでに広告が働いていて、手動でRelativeLayoutに追加しましたが、デフォルトでは画面上部に表示されます。私はgravityコマンドを使用しようとしましたが、動作させることができませんでした。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

の完全なコードスニペットのですか?同じ問題があるIm – zezba9000

答えて

8

LayoutParamsでRelativeLayoutに広告を追加します。

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を動的に作成しているからです... RelativeLayoutが既にXMLファイルで定義されていて、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); 
関連する問題