我正在创建一个自定义组件,在哪里可以知道它可以在其父级上承担的维度?在布局中,它使用fill_parent x fill_parent定义。
我在构造函数上尝试了getWidth()x getHeight(),在onMeasure方法和onFinishInflate上,在所有情况下都返回0,我希望知道它必须以独立的屏幕大小绘制一些组件的大小。
答案 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。