如何知道组件在其父级中可以采用的大小?
Posted
技术标签:
【中文标题】如何知道组件在其父级中可以采用的大小?【英文标题】:How know the size a component can assume in it's parent? 【发布时间】:2011-02-15 13:19:49 【问题描述】:我正在创建一个自定义组件,我在哪里可以知道它可以假定它的父级的尺寸?在 Layout 中,它是用 fill_parent x fill_parent 定义的。
我在构造函数、onMeasure 方法和 onFinishInflate 上尝试了 getWidth() x getHeight(),在所有情况下都返回 0,我想知道它必须在独立的屏幕尺寸中绘制某些组件的尺寸。
【问题讨论】:
【参考方案1】:您可以覆盖 onMeasure() 并从那里获取值。
http://developer.android.com/reference/android/view/View.html#onMeasure(int, int)
在 onMeasure 中,您实际上可以为组件设置自己的尺寸,然后根据尺寸构建组件。
使用 View.MeasureSpec.getSize(方法接受的参数之一。宽度或高度)来获取尺寸。
【讨论】:
第一个参数的值是 1073742304,第二个是 1073742678。我很确定我的屏幕小了很多。 这是因为你被赋予了特殊类型的参数:developer.android.com/reference/android/view/… 只需在你的 in 参数上使用方便的方法来获得你想要的东西【参考方案2】:getWidth()
和 getHeight()
只会在布局阶段之后填充,即在调用 onLayout()
之后。
您不应使用onMeasure()
或getMeasuredWidth()
/getMeasuredHeight()
中的值,因为这些只是视图最初提供或希望拥有的尺寸,不一定是它最终实际获得的尺寸。
更多信息请参见http://developer.android.com/guide/topics/ui/how-android-draws.html。
【讨论】:
那你是说通过代码无法找到视图的高度? 嗯不,你只需要等到视图布局完毕。 我明白了,我在这里找到了一个很好的答案***.com/questions/4142090/…以上是关于如何知道组件在其父级中可以采用的大小?的主要内容,如果未能解决你的问题,请参考以下文章