¡Pregunta interesante! Seguro que se siente un poco raro.
- fue una elección de diseño por parte de Google sea lo más estricta posible de espacio de nombres para controlar los errores en tiempo de compilación.
- El prefijo no se usa en los elementos porque tesis representan clases Java:
com.android.widget.TextView
(com.android.widget.*
siempre se pueden truncar). El espacio de nombres java de esta clase se resolverá automágicamente en tiempo de compilación, por lo que un espacio de nombres xml que represente un espacio de nombres java totalmente calificado no es bienvenido aquí. Pero los atributos se pueden asignar a cualquiera de las clases java heredadas del Elemento. De ahí el espacio de nombres en los atributos para permitir la herencia.
Esto se hace así principalmente porque el diseño describe objetos Java y Google aquí está utilizando el mecanismo de espacio de nombres XML para ayudar a mapear su Diseño con objetos Java. Entonces, hay colisiones entre el mundo del espacio de nombres Java y el mundo del espacio de nombres XML. También nos permite a los desarrolladores subclasificar elementos, agregar nuestros propios atributos sin preocuparse de que la próxima versión de la plataforma pueda agregar un atributo con el mismo nombre.
Ver las dos respuestas a esta entrada del blog de Dianne Hackborn, un ingeniero de Android conocida trabajar en Google: http://www.elharo.com/blog/software-development/xml/2008/09/16/android-xml-weirdness/
Muchas gracias por ese fragmento de código :) –