我想获取布局的宽度(以像素为单位)。我试过这个:
LinearLayout galleryContainer = (LinearLayout)findViewById(R.id.galleryContainerLayout);
int galleryWidth= galleryContainer.getLayoutParams().width;
如果我举杯输出 galleryWidth,它说"-1"。
我也试过
galleryContainer.getWidth()
但它第一次给出 0,然后第二次给出 480(实际大小),所以就像我在布局渗透其大小之前得到了像素一样。
管他呢?
如何真正获得以像素为单位的布局宽度?或者一些精确的值,如 dip?
在调用getWidth()
之前使用 measure()
galleryContainer.measure(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
布局已膨胀但尚未绘制。为了获得宽度或高度,您必须使用以下方法。
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
System.out.println("...Width..."+galleryContainer.getWidth());
}
不确定,但我们也可以编写这样的代码,看看是否有帮助。
Display display = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
玩得愉快。