@vetalmatitskiy
testing engineer

Почему xml для android такой ужасный на вид и есть ли альтернативы?

Начал проходить курс по андроиду и был неприятно удивлен xml-коду для описания визуальной части. код, как на меня вызывает крайне стремное ощущения - мешанина camel case и snake case. отдельные атрибуты являются фактически составными полями. логика формирования названий крайне загадочна. это лишь у меня такие ощущения или у других тоже оно возникало? Есть ли альтернативы позволяющие писать на чем-то более адекватном?
в качестве только найденного примера: layout_margin vs padding - почему в одном случае в названии есть layout, а в другом нет...
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
В андроиде параметры с префиксом layout_ используются "родительской" вью(т.е. объемлюшим ViewGroup, например Linear/Relative/FrameLayout) для того, чтобы правильно расположить вью. Они хранятся в LayoutParams, это отдельный класс, свой для каждого ViewGroup. Например, в CoordinatorLayout.LayoutParams есть layout_behaviour - задаёт поведение для этой вью.

А параметры без такого префикса используются самой вью (например, padding - насколько контент отстоит от границ. Родительская вью об этом ничего не знает, ей это не надо).

С философской точки зрения это, конечно, мешанина, но на практике довольно быстро начинаешь фильтровать все эти layout_.

Альтернатива есть только одна - писать лэйауты в коде, но это плохая идея.
Ответ написан
Комментировать
@razer89
Android-разработчик
Вполне себе нормальный xml, к нему достаточно быстро привыкаешь. Достойных альтернатив не встречал. На счет layout в названии - это означает, что атрибут будет применен к родительскому контейнеру (если это возможно). К примеру, gravity="right" - означает, что контейнер будет выравнивать свое содержимое по правому краю, layout_gravity же попытается выровнять сам контейнер в родительском элементе
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы