自定义视图如何确定它在表格中的最大高度/宽度
Posted
技术标签:
【中文标题】自定义视图如何确定它在表格中的最大高度/宽度【英文标题】:How can a custom view determine it's max height/width in a tablerow 【发布时间】:2015-05-29 22:53:05 【问题描述】:我有一个自定义视图,我想在表格行中显示它。这是 xml 的样子:
.....
<TableRow
android:layout_
android:layout_
android:layout_weight=".4">
<com.blah.MyCustomView
android:layout_
android:layout_
android:id="@+id/myCustomView"/>
</TableRow>
.....
我的问题是我无法弄清楚我必须在多少垂直和水平空间上绘制。 onDraw(Canvas canvas) 中的 canvas.getHeight() 和 canvas.getWidth 正在返回片段的高度。
如何计算包含 customView 的 tablerow 的最大高度? 谢谢
【问题讨论】:
【参考方案1】:在所需的视图上使用 getMeasuredWidth()
和 getMeasuredHeight()
。
【讨论】:
实际上它确实回答了它(或者至少做了一个很好的尝试)。 在自定义视图上调用 getMeasuredWidth()/getMeasuredHeight() 返回片段的高度/宽度而不是表格行 - 并且视图不尊重它应该包含的表格行的边界内。【参考方案2】:您正在获取片段的大小,因为 android_width 和 android_height 在您的 XML 布局中设置为 match_parent 和 fill_parent。尝试将所有内容更改为 wrap_content。 fill_parent 虽然它确实有效,但已被弃用。从现在开始尝试使用 match_parent。
【讨论】:
以上是关于自定义视图如何确定它在表格中的最大高度/宽度的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中未知宽度和高度的视图中居中 UIBezierPath 椭圆?