In Ihrem Bibliotheksmodul in der XML-Layout Referenz ?attr/colorPrimary
statt @color/AppPrimary
Dies verweist auf die Farbpalette aus Ihrer App Themenattribute. d. h.
<item name="colorPrimary">@color/AppPrimary</item>
Sie auch auf die anderen Farbpalette Attribute wie verweisen:
<item name="colorPrimaryDark">...</item> -> ?attr/colorPrimaryDark
<item name="colorAccent">...</item> -> ?attr/colorAccent
und so weiter.
Please refer to this documentation
CAVEAT:
beziehen Diese Beispiele zeigen die AppCompat Implementierung in das Thema. d.h. nein android:
Namespacepräfix.
- EDIT -
Die kurze Antwort ist, dass man einfach nicht ‚get‘ eine definierte Farbe aus dem Hauptmodul bezogen auf Ihre Bibliotheken Datei Colors.xml.
Sie können jedoch benutzerdefinierte definierte Attribute in Ihrem Design nutzen, um denselben Effekt zu erzielen.
Dies funktioniert durch eine generische styleable in Ihrer attrs.xml
Datei im Bibliotheksmodul, So etwas wie dies zu erklären:
<declare-styleable name="BaseTheme">
<attr name="someColor" format="reference|color" />
</declare-styleable>
Hinweis: Der Name des styleable hat keinen Einfluss auf diese Implementierung so frei Name fühlen es was auch immer du willst.
Dann in Ihrem Hauptthema Definition des Moduls in Ihrem style.xml 'oder ‚theme.xml‘ Datei Sie dieses Attribut auf die Farbe festlegen möchten Sie teilen möchten, wie folgt aus:
<style name="Theme.Example" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Color Palette -->
<item name="colorPrimary">...</item>
<item name="colorPrimaryDark">...</item>
<item name="colorAccent">...</item>
<!-- Here we define our custom attributes -->
<item name="someColor">@color/dark_blue</item>
</style>
Sobald dies definiert ist, können Sie auf das Attribut in Ihrem Bibliotheksmodul-XML-Code verweisen. z.B.;
Ich sollte angeben, dass dies nicht appcompat Ressourcen sind. Sprich es ist nur eine allgemeine Farbe, die im Haupt-App-Modul "dark_blue" definiert ist. Wie bekomme ich diese dark_blue Farbe in meine Bibliothek colors.xml? – AnnonAshera
Ich habe die Antwort aktualisiert, um Ihrem Anwendungsfall besser zu entsprechen. – r0adkll
Danke r0adkl Ich habe die Projektstruktur geändert. Stattdessen habe ich eine gemeinsame Kernbibliothek definiert, auf die alle Module (Bibliotheken und Basis-App) mit App-Farben/gemeinsamen Strings etc. verweisen können. – AnnonAshera