Stellen wir uns vor, wir entwickeln zusammengesetzte Komponenten basierend auf LinearLayout. Also erstellen wir eine Klasse wie folgt:
public class SomeView extends LinearLayout {
public SomeView(Context context, AttributeSet attrs) {
super(context, attrs);
setOrientation(LinearLayout.VERTICAL);
View.inflate(context, R.layout.somelayout, this);
}
}
Wenn wir LinearLayout
als Root von verwenden somelayout.xml
, haben wir eine zusätzliche Ansichtsebene, daher verwenden wir das Merge-Tag:
<?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>
Auf der Registerkarte "Vorschau" in der IDE-Zusammenführung fungiert die Zusammenführung jedoch immer als FrameLayout, und wir werden Folgendes sehen:
(Es ist Android Studio, Intellij IDEA ist genauso, über Eclipse weiß ich nicht)
Die Vorschau beschleunigt die Entwicklung von Layouts erheblich. Es ist traurig, dass Sie selbst bei einigen Layouts eine so große Hilfe verlieren. Möglicherweise gibt es eine Möglichkeit festzulegen, wie die Vorschau das merge
Tag in einem bestimmten Layout interpretieren soll .