其他分享
首页 > 其他分享> > 具有不同基本主题的Android风格

具有不同基本主题的Android风格

作者:互联网

我有一个正在处理的多种口味的android项目.

这工作正常,我可以自定义应用程序的元素,例如颜色和字符串资源.

我要使其成为某些口味基于AppCompat浅色主题,而某些口味基于AppCompat深色主题.

我知道我可以通过重复所有< items>以我的风格和每种口味设置,主题指向每个应用程序的自定义清单中的每个主题,但这似乎有些过头.

是否有一些简单的方法可以像这样设置主题

    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">                
            <item name="colorPrimary">@color/primary_colour_tone1</item>
            ...lots more settings
    </style>

但是不是直接指向Theme.AppCompat.NoActionBar而是指向可以在每个gradle构建中设置不同的引用?

所以像:

    <style name="AppTheme" parent="**Theme reference here**">                
            <item name="colorPrimary">@color/primary_colour_tone1</item>
            ...lots more settings
    </style>

我已经尝试过使用@ string / theme_name之类的方法,但这不起作用,有没有简单的方法可以做到这一点?

解决方法:

您可以为一种或多种口味的通用资源(也可以是来源)定义sourceSets,这意味着您不必为所有口味重复所有资源.

例如,您有3种口味. flavour1和flavour2使用相同的主题,但flavour3.然后,您可以为公共资源定义额外的源集,例如commonA(对于flavour1,favour2)和commonB(对于flavor3):

...
android {
    ...
    productFlavors {
        flavor1{

        }
        flavor2{

        }
        flavor3{

        }
    }

    sourceSets.flavor1{
        res.srcDirs = ['res', 'src/commonA/res']
    }
    sourceSets.flavor2{
        res.srcDirs = ['res', 'src/commonA/res']
    }
    sourceSets.flavor3{
        res.srcDirs = ['res', 'src/commonB/res']
    }
}

另外,您应该创建文件夹src / commanA和src / commonB,然后将公共资源放入其res文件夹.

标签:android-gradle,android-theme,android
来源: https://codeday.me/bug/20191027/1945885.html