【发布时间】:2020-09-23 16:43:45
【问题描述】:
我使用的是 Android 库 (SDK A),它有一个自定义选项。
此选项的使用如下例所示:
val sdk = SDK_A()
sdk.customizeFont("font/myFont.ttf")
sdk.show()
这意味着该库将在字体文件夹中查找“myFont.ttf”以使用我的自定义字体显示某些内容。
我的主要目标是制作一个使用该库的新 Android 库 (SDK B),并让我的库的用户可以访问此自定义,他们需要将自定义字体放置在我的库可以访问的地方。
我的库应该这样使用:
val sdk = SDK_B()
sdk.customizeFont("font/myFont.ttf") // it could have another approach, like resource id or something like this
sdk.show()
总结一下,SDK B 的用户将拥有一个自定义字体,并将使用 SDK B 中的 sdk.customizeFont 方法进行设置,SDK B 将使用 sdk.customizeFont SDK A 的方法。
我无法更改 SDK A,我可以更改 SDK B 并告诉用户如何使用它。
SDK A:需要使用诸如“font/myFont.ttf”之类的路径才能知道字体在哪里。
SDK B:需要知道字体在哪里才能在SDK A上设置路径,不需要相同的方法。
有人知道如何解决这个问题吗?
【问题讨论】:
-
"如何获取资源的路径" -- 资源在 Android 设备上没有文件系统路径。 “有人知道如何解决它吗?” -- 如何解决what?您已经编写了看似解决方案的内容:“SDK B 的用户将拥有自定义字体,并将使用 SDK B 中的 sdk.customizeFont 方法进行设置,SDK B 将使用 SDK A 的 sdk.customizeFont 方法设置相同的字体” .但是,这表明我不明白问题所在。
-
SDK B 用户使用 sdk_b.customizeFont("font/myFont.ttf") 时,SDK B 使用 sdk_a.customizeFont("font/myFont.ttf"),SDK A 显示消息找不到字体,我的猜测是 SDK A 正在 SDK B 的文件上寻找字体,而不是在用户的文件上。你知道我的意思吗?
-
既然我们现在知道“SDK A”是什么,我们不能评论它的
customizeFont()函数期望什么作为参数。 SDK 没有文件,因此“SDK A 正在寻找 SDK B 文件上的字体”在 Android 中没有真正的意义。您需要阅读 SDK A 的文档,或联系其开发人员,以了解customizeFont()的确切含义。或者,也许告诉我们 SDK A 实际上是什么(带有链接和内容),也许我们可以通过这种方式提供一些建议。 -
我不知道 Atlassian 空间可以公开访问...我在该页面上没有看到
customizeFont()。我看到一堆字体相关的方法,比如setTextFontName()。他们的FAQ 中的条目表示该参数是应用程序assets/内的相对路径。因此,应用程序或 SDK B 需要main/assets/font/myFont.ttf才能将font/myFont.ttf作为参数值。 -
要清楚,字体文件在你的模块中的
main/assets/font/myFont.ttf。然后,您会将font/myFont.ttf传递给setTextFontName()。
标签: android android-studio kotlin sdk android-library