Aqui está um exemplo do app
namespace que eu vi de um res/menu/main.xml
arquivo
<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>
Qual é o objetivo do app
namespace? É um espaço para nome XML Android "padrão"? As mesmas opções de valor estão disponíveis para o mesmo atributo, colocadas em dois namespaces diferentes (por exemplo, app:showAsAction
e android:showAsAction
).
Dos documentos :
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
ou seja, a linha no exemplo acima significaria outra coisa se o atributo fosse:
android:showAsAction="never"
Quase parece que pode ser algum tipo de mecanismo de "subclasse", mas não consigo encontrar nenhuma documentação real no app
espaço para nome das fontes do Google / Android.
showAsAction
em um espaço de nome personalizado significa que funciona conforme o esperado nas plataformas mais recentes e é ignorado nas plataformas mais antigas?android:
versões.showAsName
atributo não é suportado em uma biblioteca mais antiga, como é que usando um personalizado namespace permitir que a plataforma para conhecer o leque de opções possível valor (ifRoom
,never
, etc.), e saber como interpretar essas opções? Estou assumindo que "atributos que não existem" significa atributos para os quais não existe implementação na biblioteca. Trocarandroid:
porapp:
dificilmente parece uma solução completa. Estou esquecendo de algo?app:showAsName
) e todos os seus valores possíveis são incluídos no seu aplicativo quando você inclui aappcompat-v7
biblioteca (que o define em seuattrs.xml
arquivo). 2) A biblioteca AppCompat (especificamente, ActionMenuView , que é usada automaticamente quando você usaActionBarActivity
) analisa e usa oapp:showAsAction
para mostrar corretamente os itens da mesma maneira em todos os níveis da API. Certamente exige que XML e código funcionem juntos.Você pode obter algumas explicações neste link
Espaço para nome XML
fonte