Issue
Fragment を使わず View をベースにしてレイアウトを組むと、Fragment と同じような役割をもった CustomView を作ってレイアウトを組みます。 このとき CustomView は何かしらの ViewGroup を継承することになりますが、そのレイアウトファイルのルートを<merge>
にしないと無駄な ViewGroup がひとつ挟まってしまいます。一方で、<merge>
をそのまま使うと、レイアウトのプレビューでは親が何になるのかわからないため、期待通りの表示ができません。
Solution
tools 属性に<merge>
の親が何になるかを指定するtools:parentTag
が AndroidStudio 2.2 から増えています。
<merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:parentTag="android.widget.LinearLayout"> <!-- views --> </merge>
tools:parentTag
には親となる ViewGroup の名前を指定しますが、Android フレームワークの ViewGroup であっても FQCN をつかいます。またandroid:layout_width
とandroid:layout_height
を設定しないとプレビューがうまく表示できないことに注意しましょう。