0

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

4

1 回答 1

2

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

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

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

于 2012-06-04T18:52:52.773 回答