繁体   English   中英

为什么imageView不能居中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM