Immaginiamo di sviluppare componenti composti basati su LinearLayout. Quindi, creiamo una classe come questa:
public class SomeView extends LinearLayout {
public SomeView(Context context, AttributeSet attrs) {
super(context, attrs);
setOrientation(LinearLayout.VERTICAL);
View.inflate(context, R.layout.somelayout, this);
}
}
Se useremo LinearLayout
come root di somelayout.xml
, avremo un livello di visualizzazione extra, quindi usiamo il tag 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>
Ma nella scheda Anteprima di IDE merge agisce sempre come FrameLayout e vedremo qualcosa del genere:
(È Android Studio, Intellij IDEA è lo stesso, su Eclipse non lo so)
L'anteprima accelera molto lo sviluppo di layout, è triste perdere un grande aiuto anche per alcuni layout. Potrebbe esserci un modo per specificare, come l'anteprima dovrebbe interpretare il merge
tag in un particolare layout?