Но этот код работает неправильно. Почему?
Потому что инструменты сборки не поддерживают его. Последнее, что я проверял, должно работать любое префиксное пространство имен (например, xmlns:a="http://schemas.android.com/apk/res/android"
), но пространство имен по умолчанию никогда не работало.
Если вы хотите, вы можете предложить и внести патч. Попутно вы сможете определить, есть ли философская причина для этого, техническая причина, или они просто никогда не удосужились.
Почему элемент namen находится в CamelCase, а атрибуты в under_score?
Имена элементов - это классы Java, которые обычно находятся в CamelCase. Атрибуты вообще не находятся в "under_score" - префикс layout_
указывает семейство атрибутов, которые являются запросами от View
к его контейнеру. Но если вы посмотрите на атрибуты более внимательно, вы увидите, что большинство из них - camelCase, игнорируя этот префикс (например, android:textSize
).