gpt4 book ai didi

android - 在android中为图书馆项目设置不同的主题

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:58 27 4
gpt4 key购买 nike

在由库项目组成的 android 项目中,我需要在 list 中为主应用程序和库设置不同的主题。就像我需要在主项目中设置以下主题

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/grey</item>
<item name="colorPrimaryDark">@color/black</item>
<item name="colorAccent">@color/green</item>
</style>

和下面的图书馆项目

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/blue</item>
<item name="colorPrimaryDark">@color/red</item>
<item name="colorAccent">@color/white</item>
</style>

库项目样式被主应用样式覆盖。当我为样式指定不同的名称时,它会抛出明显的合并冲突错误。

下面是主应用的 list

<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

这个是给图书馆的

<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>

最佳答案

构建您的应用程序后,gradle 会将您的 list 文件合并为一个,因此在库中将主题设置为 application 标签将被应用程序的属性覆盖。

将您的样式名称更改为不同的名称,

<style name="MyLibTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/blue</item>
<item name="colorPrimaryDark">@color/red</item>
<item name="colorAccent">@color/white</item>
</style>

如果您在库函数中启动某些 Activity ,则在库 list 文件中将主题单独设置为 Activity 。在项目构建后合并时,库 list 上的 application 标签上设置的主题将被替换, 所以为个人 Activity 设置主题

   <activity android:name=".MyLibActivity" android:theme="@style/MyLibTheme">
</activity>

或者您可以使用 setTheme在您的 Activity 代码中。

setTheme(R.style.MyLibTheme);

在构建过程中,如果用户(库用户)使用相同的主题名称,它将被替换为主 app 模块主题,为了保护这种情况,您可以在库的 gradle 文件中使用 gradle 选项.

android{
// replace mylib_ with name related to your library
resourcePrefix 'mylib_'
}

关于android - 在android中为图书馆项目设置不同的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com