自定义视图如何确定它在表格中的最大高度/宽度

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。

【讨论】:

以上是关于自定义视图如何确定它在表格中的最大高度/宽度的主要内容,如果未能解决你的问题,请参考以下文章

来自自定义 Xib 的表格视图中的动态单元格大小 [重复]

如何在绘制之前获取调整大小的自定义视图的宽度和高度

iOS:自定义表格视图单元格中的约束

如何在 Swift 中未知宽度和高度的视图中居中 UIBezierPath 椭圆?

确定分组自定义单元格的 UITableViewCell 宽度的正确方法?

如何动态更改自定义单元格的表格视图单元格的高度?