Что такое merge в XML

«Что такое merge в XML» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Merge в XML используется для объединения нескольких XML-ресурсов в один. Это полезно, например, при работе с темами или стилями, когда нужно переопределить атрибуты родительского стиля или добавить новые.

Пример:

<style name="BaseTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/primary</item>
</style>

<style name="AppTheme" parent="BaseTheme">
    <item name="colorPrimary">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

Здесь AppTheme наследует BaseTheme и переопределяет colorPrimary, добавляя colorAccent.

Также merge используется в layout-файлах для оптимизации иерархии View, уменьшая лишние ViewGroup.

Пример:

<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <Button android:id="@+id/button1" ... />
    <Button android:id="@+id/button2" ... />
</merge>

При включении этого layout в другой через <include>, элементы Button будут добавлены напрямую в родительский контейнер.