Почему Android использует отдельные xmlns для ContraintLayout

Меня немного смущает ConstraintLayout в Android. Я узнал об этом, и первое, что меня смутило, почему Android использует для него отдельное пространство имен xml? xmlns:app="http://schemas.android.com/apk/res-auto"

ConstraintLayout является частью Layout, тогда почему Google не добавил его в старое пространство имен? xmlns:android="http://schemas.android.com/apk/res/android"

и почему андроиду требуется писать полное имя в XML? android.support.constraint.ConstraintLayout почему бы не просто ConstraintLayout? как RelativeLayout?


person Community    schedule 22.03.2017    source источник


Ответы (1)


ConstraintLayout является частью Layout, тогда почему Google не добавил его в старое пространство имен?

Это зарезервировано для определенных платформой атрибутов. ConstraintLayout из библиотеки, а не с платформы.

и почему андроиду требуется писать полное имя в XML? android.support.constraint.ConstraintLayout, почему не просто ConstraintLayout?

Android умеет искать представления только в паре определяемых платформой пакетов, используя сокращенную нотацию «только имя класса». android.support.constraint взято из библиотеки, а не с платформы.

person CommonsWare    schedule 22.03.2017
comment
Я ожидал такого же ответа, как и вы. Но почему Google не сделал его специфичным для платформы? Я думаю, что это может быть проще для разработчиков, потому что похоже, что RelativeLayout будет заменен им. - person ; 22.03.2017
comment
@Nothing: Но почему Google не сделал это для конкретной платформы? -- ConstraintLayout был выпущен в прошлом году. Если бы в прошивку засунули, то был бы в Android 7.0+. Android 7.0+ сейчас используется очень немногими устройствами, тогда как библиотеку ConstraintLayout можно использовать в приложениях, поддерживающих сотни миллионов устройств. RelativeLayout не будет заменено на ConstraintLayout, поскольку RelativeLayout будет поддерживаться на неопределенный срок по соображениям обратной совместимости. - person CommonsWare; 22.03.2017
comment
Я вернулся с новой путаницей, чтобы подтвердить, почему Android не написал полное имя для определения пути? значит, предположим, что я пишу просто ConstraintLayout, тогда андроид может добавить полное имя в фоновом режиме. Почему андроид этого не сделал? Просто чтобы показать, что это зависит от библиотеки, а не от платформы? - person ; 22.03.2017
comment
@Nothing: Что произойдет, если есть 2+ класса с именем ConstraintLayout? Как бы разрешился конфликт? В общем, спрашивая, почему разработчик X сделал вещь Y? бесполезен при переполнении стека. Единственный, кто может дать окончательный ответ, — это разработчик X, а разработчик X вряд ли будет здесь отвечать на вопросы. - person CommonsWare; 22.03.2017
comment
Я знаю, что может быть трудно ответить, но я спрашивал, может быть, есть чему поучиться для улучшения подходов к дизайну. Любое как спасибо теперь понял. - person ; 22.03.2017