Ecco un esempio dello spazio dei nomi app
che ho visto da un file di res/menu/main.xml
Che cos'è lo spazio dei nomi XML Android dell'app?
<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>
cosa serve lo spazio dei nomi app
servire? Si tratta di uno spazio dei nomi XML "standard"? Sono disponibili le stesse opzioni di valore per lo stesso attributo collocati in due diversi spazi dei nomi (ad esempio app:showAsAction
e android:showAsAction
).
Dal docs: android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
cioè, sarebbe la linea nell'esempio di cui sopra significa qualcosa di diverso se l'attributo fosse invece:
android:showAsAction="never"
Sembra quasi che potrebbe essere una sorta di " sottoclasse "meccanismo, ma non riesco a trovare alcuna documentazione reale sullo spazio dei nomi app
da fonti Google/Android.
Grazie! Sono felice di aver finalmente trovato una menzione di questo nella documentazione. Una domanda di follow-up, però. La barra delle azioni doc nel tuo collegamento dice: "Si noti che l'attributo showAsAction in alto utilizza uno spazio dei nomi personalizzato definito nel tag
Quindi cosa succede sui dispositivi più vecchi in cui gli attributi non esistono nel framework? Non mi è ancora chiaro come la definizione di uno spazio dei nomi personalizzato funzioni attorno al supporto mancante per un attributo. Dichiarare 'showAsAction' sotto un namespace personalizzato significa che funziona come previsto sulle piattaforme più recenti e viene ignorato su quelli più vecchi? – coder123
Gli attributi che non esistono vengono ignorati silenziosamente. Quando crei un attributo personalizzato, stai garantendo che l'attributo personalizzato esisterà in fase di esecuzione (ovviamente: la sua definizione è inclusa nella tua app). Pertanto la libreria di supporto utilizza attributi personalizzati in modo che il loro codice personalizzato per la creazione di menu possa utilizzare un singolo percorso di codice che funzioni su tutte le versioni API, sostituendo sostanzialmente qualsiasi necessità di utilizzare le versioni 'android:'. – ianhanniballake