0
我知道如何使用其layoutParams的重力屬性將imageView居中。不過,我試圖讓它集中在邊緣遊戲中。如果圖像的寬度爲w,顯示窗口的寬度爲W,我的猜測是leftMargin = rightMargin = W/2 - w/2。同樣,topMargin = bottomMargin = H/2 - h/2。結果是imageView水平居中,但沒有垂直居中。下面的代碼:爲什麼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);
如果狀態欄和標題欄被隱藏,則圖像被集中,所以我想有什麼東西與顯示窗口的大小。
是的。就是這樣。我不明白爲什麼API不提供另一種方式來捕捉佈局高度 – marc