1 つ以上のビューを追加する必要があるクラスがあります。この例では、単一のImageView
. 問題なくビューを追加して を使用して整列できますLayoutParameters
が、垂直軸に沿ってどこかに整列または中央揃えしようとすると、それらは上部にくっつくか、まったく表示されません (ビューから外れている可能性があります)。
コンストラクターでメソッドを呼び出しますfillView()
。これは、すべてのディメンションなどが設定された後に発生します。
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());
}
matchParent()
public LayoutParams matchParent(){
lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
lp.setMargins(0, 0, 0, 0);
return lp;
}
setCenter()
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()
。LinearLayout