J'écris ma propre barre d'outils avec un widget Android.support.v7.widget.Toolbar et je veux en mettre autant que possible dans un styles.xml dans mon dossier res.
Partie d'un fichier dans /res/layout/$example.xml
<Android.support.v7.widget.Toolbar 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"
Android:id="@+id/toolbar_show_addresses_simple"
app:style="@style/toolbar_dark" >
mon "toolbar_dark" est défini comme suit dans un fichier /res/values/styles.xml
<style name="toolbar_dark">
<item name="Android:layout_width">match_parent</item>
<item name="Android:layout_height">wrap_content</item>
<item name="Android:background">@color/myPrimary</item>
<item name="app:theme">@style/ThemeOverlay.AppCompat.Dark</item>
<item name="app:popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="app:contentInsetStart">0dp</item>
</style>
Lors de la compilation
Output:
Error: No resource found that matches the given name: attr 'app:contentInsetStart'.
Error: No resource found that matches the given name: attr 'app:popupTheme'.
Error: No resource found that matches the given name: attr 'app:theme'.
Si j'utilise l'application: * les valeurs directement dans $ example.xml, tout fonctionne bien. Par conséquent, comment puis-je utiliser l'espace de noms de mon application dans les fichiers du dossier res?
Vous ne pouvez pas utiliser un espace de noms d'application dans votre fichier de style et vous devez vous référer à l'attribut style
sans espace de noms d'application dans votre mise en page.
Vous pouvez faire quelque chose comme ça:
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/toolbar_show_addresses_simple"
style="@style/toolbar_dark" >
Style:
<style name="toolbar_dark" parent="Widget.AppCompat.Toolbar">
<item name="Android:background">@color/green</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="theme">@style/ThemeOverlay.AppCompat.Dark</item>
</style>