onMeasure with wrap_content 正在获取未Integer.MIN_VALUE的参数



在我的xml中,我为宽度和高度指定了wrap_content,但是当我覆盖onMeasure函数时,传递给它的宽度和高度是-2147483348奇怪的是300> Integer.MIN_VALUE这有什么原因吗? 为什么它不是整数。MIN_VALUE或 0 如果我里面没有任何东西。顺便说一句,这是我正在制作的自定义视图,所以我必须做 setMeasuredDimension 我相信。

onMeasure的参数不是可用的宽度和高度,而是可用宽度和高度的编码以及有关如何使用这些值的标志。您可以使用 View.MeasureSpec 类对它们进行解码:

protected void onMeasure(int widthSpec, int heightSpec) {
    final int widthMode = MeasureSpec.getMode(widthSpec);
    final int widthSize = MeasureSpec.getSize(widthSpec);
    // etc.
}

模式将是AT_MOSTEXACTLYUNSPECIFIED之一。请参阅文档,了解如何使用它。特别是,如果未UNSPECIFIED模式,则在调用 setMeasuredDimension不得使用大于该维度大小的值。

最新更新