状況は以下
- CustomView(名前はPositionView_)のlayout xmlのRootタグはmergeタグ
<merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" > ... </merge>
- Fragmentのlayout xmlは以下。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> ... <jp.co.sample.PositionView_ android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone"/> ... </ScrollView>
原因はmergeタグを使った場合、mergeタグのattributeはすべて無視されて親のxmlに書いたattributeが使われるため「android:orientation="vertical"」が無効になってしまうため。 FragmentのXMLを以下のようにすると直った。
<jp.co.sample.PositionView_ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:visibility="gone"/>
でもorientationは親画面が何でも変わらないからCustomViewのXMLの方に書きたいなぁ。CustomViewのattributeに親画面で定義したattributeを上書きして適用するのがいいんだけど。。