我有一个需要添加一个或多个视图的类。在此示例中,单个ImageView
. 我可以毫无问题地添加视图并使用 对齐它们LayoutParameters
,但是当我尝试将它们沿垂直轴对齐或居中时,它们要么粘在顶部,要么根本不出现(它们可能只是在视图之外)。
在构造函数中,我调用了一个方法fillView()
,它发生在所有维度等都设置好之后。
填充视图()
public void fillView(){
img = new ImageView(context);
rl = new RelativeLayout(context);
img.setImageResource(R.drawable.device_access_not_secure);
rl.addView(img, setCenter());
this.addView(rl, matchParent());
}
匹配父母()
public LayoutParams matchParent(){
lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
lp.setMargins(0, 0, 0, 0);
return lp;
}
设置中心()
public LayoutParams setCenter(){
lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); //This puts the view horizontally at the center, but vertically at the top
return lp;
}
同样,添加诸如 ALIGN_RIGHT 或 BELOW 之类的规则也可以正常工作,但 ALIGN_BOTTOM 或 CENTER_VERTICALLY 则不行。
我尝试同时使用此方法和setGravity()
aLinearLayout
报价,结果相同。