2014-07-24 52 views
0

adView是AdMob的視圖,我將它添加到這樣的另一架圖:Android的 - 對齊中心的RelativeLayout中的FrameLayout

adView = new AdView(this); 

RelativeLayout relativeLayout = new RelativeLayout(this); 
mFrameLayout.addView(relativeLayout); 


RelativeLayout.LayoutParams adViewParams = new RelativeLayout.LayoutParams(
    AdView.LayoutParams.WRAP_CONTENT, 
    AdView.LayoutParams.WRAP_CONTENT); 
    //important I use this to make it appear on the bottom 
adViewParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 


relativeLayout.addView(adView, adViewParams); 

它出現在框架佈局的底部,因此在底部屏幕(框架佈局是我的屏幕)。但是不在中心,它是左對齊的。如何在FrameLayout的中心對齊RelativeLayout

EIDT:這裏是FrameLayout裏的情況下,你需要它:

// FrameLayout 
    ViewGroup.LayoutParams framelayout_params = 
     new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
            ViewGroup.LayoutParams.MATCH_PARENT); 
    mFrameLayout = new FrameLayout(this); 
    mFrameLayout.setLayoutParams(framelayout_params); 

回答

1

我這樣做的,它的工作:

adViewParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); 

請確認是否正確。

+1

請考慮使用'RelativeLayout.CENTER_HORIZONTAL'來代替,因爲'RelativeLayout.CENTER_IN_PARENT'也會嘗試對齊**垂直**和水平**,與RelativeLayout.ALIGN_PARENT_BOTTOM相矛盾。 –

+0

謝謝,根據你的評論@AndrewT改變。你能告訴第二個參數的含義是'RelativeLayout.TRUE'嗎? – Narek

+1

經過研究,我去讀了'RelativeLayout'的源代碼。顯然,允許在「boolean」中使用'addRule()'是個訣竅。 addRule()的第二個參數接受'int',它應該是另一個'View'的ID(在使用XML時進行比較)。當規則與另一個「視圖」(如本例中)無關時,它使用0(「false」)和-1(「RelativeLayout.TRUE」),因爲兩者都是'View'的無效ID。 [鏈接到源代碼](https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/RelativeLayout.java) –

相關問題