Как переопределить стили библиотеки, которая имеет свою собственную активность

У меня есть библиотека, которая имеет свои собственные действия с атрибутами colorPrimary и colorPrimaryDark. В приложении, использующем эту библиотеку, для этих атрибутов цвета есть разные значения.

Есть ли способ заставить библиотеку использовать стиль, предоставляемый приложением вызывающего абонента?

Итак, в конце, если приложение имеет зеленую панель инструментов, в деятельности в библиотеке будет зеленая панель инструментов, а не та, которая определена в библиотечной теме.

Это тема библиотеки:

<style name="LibraryTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/red</item>
    <item name="colorPrimaryDark">@color/dark_red</item>
</style>

И это основная тема приложения приложения:

<style name="SampleAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/green</item>
    <item name="colorPrimaryDark">@color/dark_green</item>
    <item name="colorAccent">@color/accent_color</item>
</style>

Ответ 1

Если "colorPrimary" будет использовать одно и то же значение - @color/primaryColor, тогда значение библиотеки primaryColor будет переопределено primaryColor в примерном приложении.

Если вы будете использовать разные значения для colorPrimary в библиотеке и приложении, например - @color/libPrimaryColor и @color/appPrimaryColor, тогда цвета будут отличаться

Ответ 2

Вы можете переопределить тему в вашем файле стиля,

<style name="LibraryTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">Your color</item>
    <item name="colorPrimaryDark">Your color, too</item>
</style>