2014-07-24 103 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) –

相关问题