初めに
今回はAndroid
でView
を実装する際に必須となるWidth
とHeight
に関することを記事にしていこうと思います。
本文
View
を作るのに必須なWidth
とHeight
、xml上ではただ指定するだけですが、大きさが変動する時などにはコード上で取得をしたりしないといけません。
コード上で
view.width
view.heght
で取得をしようとした際に候補に下記のようなものが出てくると思います。
view.measuredWidth
view.measuredHeight
実はこれも値を取得できます。
では何が違うのかを説明していこうと思います。
measured
の方はOnMeasured
時点での子Viewを測定したサイズになります。
get
の方はOnLayout
時、つまり描画されるタイミングで確定した子Viewのサイズになります。
そのため、measured
とget
には値のズレが発生することが十分にあり得ます。
measured
を使うときは上記を理解した上でonLayout
時にどうしても使いたい時か描画前のサイズをとりたい時のみ使うのを強くお勧めします
最後に
以前、Width
で値が取れない時にmeasuredWidth
で値が取れたので気になって調べたことを記事にしました。
使われる場面は限定されますし、あまり使うのをお勧めはできませんが、覚えておいて損はないと思い備忘録程度に書かせていただきました。
何かのお役に立てれば幸いです。