studio programacion herramientas fundamentos con avanzado aplicaciones android xml android-layout xml-namespaces android-tools-namespace

programacion - ¿Cuál es el espacio de nombres de Android XML de la "aplicación"?



manual de android en pdf (1)

El espacio de nombres de la app no es específico de una biblioteca, pero se usa para todos los atributos definidos en su aplicación, ya sea por su código o por las bibliotecas que importa, creando efectivamente un único espacio de nombres global para atributos personalizados, es decir, atributos no definidos por el Android sistema.

En este caso, la biblioteca appcompat-v7 utiliza atributos personalizados que reflejan el android: espacios de nombres para admitir versiones anteriores de android (por ejemplo: android:showAsAction solo se agregó en API11, pero la app:showAsAction (se proporciona como parte de su aplicación) funciona en todos los niveles de API que su aplicación tiene): obviamente, el uso de android:showAsAction no funcionaría en niveles de API donde ese atributo no está definido.

Aquí hay un ejemplo del espacio de nombres de la app que he visto en un archivo res/menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" > <item android:id="@+id/action_settings" android:title="@string/action_settings" android:orderInCategory="100" app:showAsAction="never" /> </menu>

¿Para qué sirve el espacio de nombres de la app ? ¿Es un espacio de nombres de Android XML "estándar"? ¿Están disponibles las mismas opciones de valor para el mismo atributo en dos espacios de nombres diferentes (por ejemplo, app:showAsAction y android:showAsAction ).

De los docs : android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"] android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]

es decir, la línea en el ejemplo anterior significaría algo más si el atributo fuera en su lugar:

android:showAsAction="never"

Casi parece que podría ser algún tipo de mecanismo de "subclasificación", pero parece que no puedo encontrar ninguna documentación real en el espacio de nombres de la app de las fuentes de Google / Android.