如何覆盖具有自己的Activity的库的样式

问题描述 投票:10回答:2

我有一个库,它有自己的活动与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>
android android-theme android-styles android-library
2个回答
3
投票

如果“colorPrimary”将使用相同的值 - @color/primaryColor,那么库primaryColor的值将被示例app中的primaryColor覆盖。

如果您在库和应用程序中使用“colorPrimary”的不同值,例如 - @color/libPrimaryColor@color/appPrimaryColor则颜色会有所不同


0
投票

您可以覆盖样式文件中的主题,

<style name="LibraryTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">Your color</item>
    <item name="colorPrimaryDark">Your color, too</item>
</style>
© www.soinside.com 2019 - 2024. All rights reserved.