【问题标题】:How to override styles of a library which has its own Activity如何覆盖具有自己 Activity 的库的样式
【发布时间】:2016-05-20 19:12:00
【问题描述】:

我有一个库,它有自己的带有 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


    【解决方案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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-10
        • 2015-03-07
        • 1970-01-01
        • 2019-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多