就像你想做的那样,按照CommonWare的回答,这是不可能的。但是你可以用另一种方式做:对于我的 whitelabels 产品,我创建了一个名为 branding.xml 的文件(在 values 文件夹内),在这个文件中,我设置了我在构建不同产品时需要注意的所有事情我的根项目。 (你当然可以用你想要的名字来调用这个文件。这个文件也必须包含在根项目中)。
我将开始向您展示我的一小部分 gradle 文件,好吗?
signingConfigs {
rootproject{
storeFile file("rootprojec_keystore") //Path to the keystore file
keyAlias "aliasname"
storePassword "xxxxxxxxx"
keyPassword "xxxxxxx"
}
whitelabel1 {
storeFile file("whitelabels/whitelabel1_keystore") //Path to the keystore file
keyAlias "whitelabel_1"
storePassword "xxxxxxxx"
keyPassword "xxxxxxx"
}
}
productFlavors {
rootproject{
applicationId = "com.rootproject.android"
signingConfig = signingConfigs.rootproject
}
whitelabel1{
applicationId = "com.whitelaber1.android"
signingConfig = signingConfigs.whitelabel1
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src','test']
resources.srcDirs = ['src','test']
aidl.srcDirs = ['src','test']
renderscript.srcDirs = ['src','test']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
whitelabel1{
res.srcDirs = ['whitelabels/whitelabel1/res']
}
}
在最后一个块 (sourceSets) 中是您拥有密钥的地方。对于我的 whitelabels,我使用的是完整的 res 文件夹,但您甚至可以只使用我认为的文件:whitelabels/whitelabel1/res/values/branding.xml
好吗?现在我们知道编译器将如何为您使用不同的文件/文件夹 whitelabel。
好吧,现在我们将描述branding.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="kind_font">assets/fonts/nameofthefont.ttf</integer>
</resources>
你必须在你的根项目和白标项目中创建相同的文件,当然,改变字体的值。
好的,在您的应用中使用自定义字体的一种优雅方式是使用自定义文本视图,因此您必须按照此处的说明进行操作,这非常简单:
http://www.techrepublic.com/article/pro-tip-extend-androids-textview-to-use-custom-fonts/
现在最后是代码行,您必须在其中访问具有您要加载的字体名称的变量。在最后一本手册中有一行:
Typeface myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/"+fontName);
您应该使用branding.xml 文件中描述的变量名称进行修改:
String fontName = ((String)getResources().getString(R.bool.kind_font)
仅此而已……哈哈哈……如果它有效,请投票给我……祝你编码愉快!