LinearLayoutに基づいた複合コンポーネントを開発しているとします。したがって、次のようなクラスを作成します。
public class SomeView extends LinearLayout {
public SomeView(Context context, AttributeSet attrs) {
super(context, attrs);
setOrientation(LinearLayout.VERTICAL);
View.inflate(context, R.layout.somelayout, this);
}
}
LinearLayout
をsomelayout.xml
のルートとして使用する場合、追加のビューレベルがあるため、mergeタグを使用します。
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Some text"
Android:textSize="20sp"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Some other text"/>
</merge>
ただし、[プレビュー]タブのIDE mergeは常にFrameLayoutとして機能し、次のようなものが表示されます。
(Android Studio、Intellij IDEAはちょうど同じですが、Eclipseについては知りません)
プレビューはレイアウトの開発を大幅にスピードアップしますが、いくつかのレイアウトでもこのような大きな助けを失うのは悲しいことです。特定のレイアウトでmerge
タグをPreviewがどのように解釈するかを指定する方法がありますか?
新しいparentTagツール属性( added in Android Studio 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="LinearLayout"
tools:orientation="horizontal">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Some text"
Android:textSize="20sp"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Some other text"/>
</merge>
注:両方Android:layout_width
およびAndroid:layout_height
は、レイアウトがエディターで正しく表示されるように指定する必要があります。
編集:古い回答。 starkej2による回答を参照してください。
Android Studio 0.5.8では、tools:showInのサポートが追加されました。これを使用することにより、<merge>レイアウトをプレビューできます。
http://tools.Android.com/recent/androidstudio058released
tools:showInを使用したlayout/layout_merge.xml
<merge xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:custom="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
tools:showIn="@layout/simple_relativelayout">
......
</merge>
次を含むlayout/simple_relativelayout.xml:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<include layout="@layout/layout_merge"/>
</RelativeLayout>