2014-08-29 125 views
0

我想覆盖2个视图。以编程方式覆盖视图RelativeLayout

我的AdView应该在我的GameView上方“浮动”。

RelativeLayout layout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); 
    layout.setLayoutParams(params); 

    AdView admobView = createAdView(); 
    layout.addView(admobView); 
    View gameView = createGameView(config); 
    layout.addView(gameView); 

    setContentView(layout); 
    startAdvertising(admobView); 


private AdView createAdView() { 
    adView = new AdView(this); 
    adView.setAdSize(AdSize.SMART_BANNER); 
    adView.setAdUnitId(AD_UNIT_ID); 
    adView.setId(R.id.classic); // this is an arbitrary id, allows for relative positioning in createGameView() 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 
    params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); 
    adView.setLayoutParams(params); 
    adView.setBackgroundColor(Color.TRANSPARENT); 
    return adView; 
} 

private View createGameView(AndroidApplicationConfiguration cfg) { 
    gameView = initializeForView(new MyGdxGame(), cfg); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
    params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); 
    params.addRule(RelativeLayout.BELOW, adView.getId()); 
    gameView.setLayoutParams(params); 
    return gameView; 
} 

这只会将游戏视图设置在adview下面。

谢谢

编辑:太多的代码......

+0

那么你的问题是什么?你在问题结束时说过'这只会将游戏视图设置在adview'下面' – 2014-08-29 14:15:41

+0

希望这张图片能够描述我想要做的事情。我想要GameView内的AdView。 http://s1.directupload.net/images/140829/w3nkbf2s.jpg – KennyPew 2014-08-29 14:35:24

回答

1

尝试:

private View createGameView(AndroidApplicationConfiguration cfg) { 
    gameView = initializeForView(new MyGdxGame(), cfg); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
    params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); 
    gameView.setLayoutParams(params); 
    return gameView; 
} 

更新

也改变了加料顺序:

View gameView = createGameView(config); 
layout.addView(gameView); 
AdView admobView = createAdView(); 
layout.addView(admobView); 
+0

这样的广告不会显示出来... – KennyPew 2014-08-29 14:50:37

+0

@KennyPew你首先添加到布局的视图是什么?尝试先添加'gameView',然后添加'adView'。 – 2014-08-29 15:03:53

+0

AdView,我编辑了我的第一篇文章 – KennyPew 2014-08-29 15:06:36