カスタムビューを作成し、onDraw()をオーバーライドしました。
- onMeasure()をオーバーライドしない場合、キャンバスはデバイスの画面全体を占めます。
- onMeasure()をオーバーライドすると、キャンバスはsetMeasuredDimension()に渡されたディメンションにサイズ変更されます。
したがって、キャンバスのサイズを確実に変更できます。これは、onMeasure()で実行する必要があります。
カスタムビューのキャンバスのサイズを、LayoutParams(XMLまたはJava)で指定されたサイズに変更したい
setMeasuredDimension()内で渡すLayoutParamsに記載されているサイズパラメータを返すメソッド/属性が必要です。
getWidth()/ getHeight()-値はonMeasure()の最初のパスの後にのみ設定されます
getLayoutParams()。width / getLayoutParams()。height-この値がいつ有効な値を返すかわからない(パラメータを設定すると、プログラムで値「-1」が返されます)
getMeasuredWidth()/ getMeasuredHeight()-XMLで設定されている場合にのみ、レイアウトパラメータで指定されたサイズパラメータを返します。プログラムで割り当てられている場合は返しません。
customviewのレイアウトパラメータで設定された幅と高さを返す他の保証メソッドはありますか、またはgetMeasuredWidth()/ getMeasuredHeight()がsetMeasureDimensions()で渡す正しい選択です?
Androidカスタムビューサイズと重複している可能性があります