如何知道组件在其父级中可以采用的大小?

时间:2011-02-15 13:19:50

标签: android view android-layout

我正在创建一个自定义组件,在哪里可以知道它可以在其父级上承担的维度?在布局中,它使用fill_parent x fill_parent定义。

我在构造函数上尝试了getWidth()x getHeight(),在onMeasure方法和onFinishInflate上,在所有情况下都返回0,我希望知道它必须以独立的屏幕大小绘制一些组件的大小。

2 个答案:

答案 0 :(得分:2)

您可以覆盖onMeasure()并从那里获取值。

http://developer.android.com/reference/android/view/View.html#onMeasure(int, int)

在onMeasure中,您实际上可以为组件设置自己的尺寸,并在此之后根据尺寸构建组件。

使用View.MeasureSpec.getSize(其中一个参数方法接受。宽度或高度)来获取尺寸。

答案 1 :(得分:1)

getWidth()getHeight()只会在布局阶段之后填充,即在onLayout()被调用之后。

您不应该使用onMeasure()getMeasuredWidth() / getMeasuredHeight()中的值,因为这些只是View最初提供或希望拥有的维度,不一定是它的维度实际上最终得到了。

有关详细信息,请参阅http://developer.android.com/guide/topics/ui/how-android-draws.html