[英]Why doesn't the imageView get centered?
我知道如何使用其layoutParams的gravity属性将imageView居中。 但是,我正在尝试使其边缘集中在边距上。 如果图像的宽度为w,显示窗口的宽度为W,我的猜测是leftMargin = rightMargin = W / 2-w / 2。 同样,topMargin = bottomMargin = H / 2-h / 2。 结果是imageView水平居中,但不垂直居中。 这是代码:
// new layout, blue background
FrameLayout root = new FrameLayout(this);
root.setBackgroundColor(getResources().getColor(R.color.blue));
// window dimensions
Point window = new Point();
getWindowManager().getDefaultDisplay().getSize(window);
// imageView with bitmap
ImageView img = new ImageView(this);
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.square);
img.setImageBitmap(bm);
// imageView layout params
int w = bm.getWidth();
int h = bm.getHeight();
FrameLayout.LayoutParams p = new FrameLayout.LayoutParams(w, h);
p.setMargins(window.x/2 - w/2, window.y/2 - h/2, window.x/2 - w/2, window.y/2 - h/2);
img.setLayoutParams(p);
// add image to root layout
root.addView(img);
// set layout as main layout
setContentView(root);
如果状态栏和标题栏被隐藏,则图像居中,因此我猜显示窗口的大小有些问题。
您的问题是,您正在获得整个设备屏幕的大小,其中包括显示通知和标题栏的所有像素(您的视图水平居中而不是垂直居中的原因)。 要解决此问题,您应该抓住根视图的高度而不是设备屏幕的高度,然后对中方法将起作用。
为了让您的根视图的大小,你可以使用代码从这个职位
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.