Imaginons que nous développions un composant composé basé sur LinearLayout. Donc, nous créons une classe comme ceci:
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, nous utilisons donc une balise de fusion:
<?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 est juste la même chose, à propos d'Eclipse je ne sais pas)
L'aperçu accélère beaucoup le développement des mises en page, c'est triste de perdre une si grande aide, même pour certaines mises en page. Peut-être existe-t-il un moyen de spécifier, comment Preview doit interpréter la merge
balise dans une mise en page particulière?