Aquí hay un ejemplo del app
espacio de nombres que he visto de un res/menu/main.xml
archivo
<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 app
espacio de nombres? ¿Es un espacio de nombres XML "estándar" para Android? Son las mismas opciones de valor disponibles para el mismo atributo colocado en dos espacios de nombres diferentes (por ejemplo, app:showAsAction
y android:showAsAction
).
De los documentos :
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
es decir, la línea del ejemplo anterior significaría algo más si el atributo fuera:
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 sobre el app
espacio de nombres de las fuentes de Google / Android.
showAsAction
bajo un espacio de nombres personalizado significa que funciona como se esperaba en las plataformas más nuevas y se ignora en las más antiguas?android:
versiones.showAsName
atributo no está soportado en una biblioteca de más edad, ¿cómo el uso de un espacio de nombres a medida permitirá a la plataforma para conocer la gama de opciones posibles valores (ifRoom
,never
, etc.), y saber cómo interpretar esas opciones? Supongo que "atributos que no existen" significa atributos para los que no existe implementación en la biblioteca. Cambiarandroid:
porapp:
apenas parece una solución completa. ¿Me estoy perdiendo de algo?app:showAsName
) y todos sus valores posibles se incluyen en su aplicación cuando incluye laappcompat-v7
biblioteca (que la define en suattrs.xml
archivo). 2) La biblioteca AppCompat (específicamente, ActionMenuView , que se usa automáticamente cuando se usaActionBarActivity
) analiza y usaapp:showAsAction
para mostrar correctamente los elementos de la misma manera en todos los niveles de API. Ciertamente requiere XML y código para trabajar juntos.Puedes obtener alguna explicación en este enlace
Espacio de nombres XML
fuente