私のxmlでは、幅と高さの両方にwrap_contentを指定しましたが、onMeasure関数をオーバーライドすると、渡される幅と高さは-2147483348であり、奇妙なことに300> Integer.MIN_VALUEです。これには理由がありますか?integer.MIN_VALUEでないのはなぜですか、内部に何も入っていない場合は0です。ところで、これは私が作成しているカスタムビューなので、setMeasuredDimensionを実行する必要があると思います。
質問する
909 次
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_MOST
、EXACTLY
、またはのいずれかになりUNSPECIFIED
ます。これをどのように使用するかについては、ドキュメントを参照してください。特に、モードが でないUNSPECIFIED
場合、 を呼び出すときに、その次元のサイズより大きい値を使用してはなりませんsetMeasuredDimension
。
于 2012-06-04T18:52:52.773 に答える