【Android】アスペクト比で制約を指定する
結論
まず、前提としてアスペクト比で制約を追加したいものはLinearLayout
などではなく、ConstraintLayout
で内包する必要があります。
あとはlayout_constraintDimensionRatio
でアスペクト比を設定すれば完了です。アスペクト比の指定は"幅:高さ"の順番です。
app:layout_constraintDimensionRatio="1:1"
また、この時にandroid:layout_width
やandroid:layout_height
属性を消すと、下記のようなエラーが発生するので、0dp
に設定しておきましょう。
android.view.InflateException: Binary XML file line #13: Binary XML file line #13: You must supply a layout_width attribute.
ちなみに、幅と高さ、どちらかを基準としてもう一方の制約を決定したい場合があると思いますが、そんな場合はw
またはh
で、レスポンシブに変更したい方を指定します。下記の例では、幅を基準として高さを決定するようになります。
app:layout_constraintDimensionRatio="h,1:1"
てな感じで本日も以上となります🍺