Imaginons que nous développions un composant composé basé sur LinearLayout. Nous créons donc une classe comme celle-ci :
public class SomeView extends LinearLayout {
public SomeView(Context context, AttributeSet attrs) {
super(context, attrs);
setOrientation(LinearLayout.VERTICAL);
View.inflate(context, R.layout.somelayout, this);
}
}
Si nous utilisons LinearLayout
comme racine de somelayout.xml
nous aurons un niveau de vue supplémentaire, donc nous utiliserons la balise 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>
Mais dans l'onglet Aperçu de l'IDE, la fusion agit toujours comme FrameLayout, et nous verrons quelque chose comme ça :
(C'est Android Studio, Intellij IDEA c'est pareil, pour Eclipse je ne sais pas)
Preview accélère beaucoup le développement des mises en page, il est triste de perdre une telle aide, même pour certaines mises en page. Peut-être qu'il y a un moyen de spécifier, comment Preview devrait interpréter merge
tag dans une mise en page particulière ?