使用wrap_content的onMeasure正在获取不是Integer.MIN_VALUE的参数

时间:2012-06-04 18:46:39

标签: android android-layout

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

1 个答案:

答案 0 :(得分: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_MOSTEXACTLYUNSPECIFIED之一。请参阅文档,了解您应该如何使用它。特别是,如果模式不是UNSPECIFIED,则当您致电setMeasuredDimension时,不得使用大于该维度大小的值。