getLayoutParams返回null?

我创build了一个扩展View的类:

public class BoardView extends View { 

我已经在应用程序的main.xml文件中指定了BoardView的宽度和高度:

  <mypackage.BoardView android:id="@+id/board" android:layout_width="270px" android:layout_height="270px" /> 

我试图从一个函数,从BoardView的构造函数调用的宽度和高度。 这是我正在做的事情:

 ViewGroup.LayoutParams p = this.getLayoutParams(); int h = p.height; 

但getLayoutParams总是返回null。 任何想法,为什么这是行不通的?

Solutions Collecting From Web of "getLayoutParams返回null?"

我不确定布局参数(即LayoutParams的实例)将在View的构造函数中可用。 我想,只有在“布局”通过后才能使用。 请阅读Android如何在此处绘制视图。 此外, 这个线程试图确定什么时候你应该得到一个视图的度量尺寸。

请注意,如果您只想获取通过布局XML传递的属性值,则可以将AttributeSet实例作为parameter passing给您的构造函数。

 public MyView(Context context, AttributeSet attrs){ // attrs.getAttributeCount(); // attrs.getAttributeXXXvalue(); } 

将视图添加到其父项后,可以使用布局参数。 尝试将代码从视图构造函数移动到onAttachedToWindow()因为getLayoutParams()不会在那里返回null

 @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); assert getLayoutParams() != null; }