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);
请考虑使用'RelativeLayout.CENTER_HORIZONTAL'来代替,因为'RelativeLayout.CENTER_IN_PARENT'也会尝试对齐**垂直**和水平**,与RelativeLayout.ALIGN_PARENT_BOTTOM相矛盾。 –
谢谢,根据你的评论@AndrewT改变。你能告诉第二个参数的含义是'RelativeLayout.TRUE'吗? – Narek
经过研究,我去读了'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) –