如何覆盖拥有自己 Activity 的库的样式
How to override styles of a library which has its own Activity
我有一个库,它有自己的带有 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>
如果 "colorPrimary" 将使用相同的值 - @color/primaryColor
,则库 primaryColor
的值将被示例应用程序中的 primaryColor
覆盖。
如果您将在库和应用程序中为 "colorPrimary" 使用不同的值,例如 - @color/libPrimaryColor
和 @color/appPrimaryColor
那么颜色将不同
您可以覆盖样式文件中的主题,
<style name="LibraryTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">Your color</item>
<item name="colorPrimaryDark">Your color, too</item>
</style>
我有一个库,它有自己的带有 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>
如果 "colorPrimary" 将使用相同的值 - @color/primaryColor
,则库 primaryColor
的值将被示例应用程序中的 primaryColor
覆盖。
如果您将在库和应用程序中为 "colorPrimary" 使用不同的值,例如 - @color/libPrimaryColor
和 @color/appPrimaryColor
那么颜色将不同
您可以覆盖样式文件中的主题,
<style name="LibraryTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">Your color</item>
<item name="colorPrimaryDark">Your color, too</item>
</style>