Давайте уявимо, що ми розробляємо складний компонент на основі 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
, у нас буде додатковий рівень перегляду, тому ми використовуємо тег злиття:
<?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 злиття завжди виступає як FrameLayout, і ми побачимо щось подібне:
(Це Android Studio, Intellij IDEA - те саме, про Eclipse я не знаю)
Попередній перегляд значно прискорить розробку макетів, сумно втратити таку чудову допомогу навіть для деяких макетів. Можливо, є спосіб вказати, як Preview повинен інтерпретувати merge
тег у конкретному макеті?