【问题标题】:How to get a resource's path from the app using an Android Library?如何使用 Android 库从应用程序中获取资源的路径?
【发布时间】: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


【解决方案1】:

感谢CommonsWare:

需要明确的是,字体文件位于模块中的main/assets/font/myFont.ttf 中。然后,您会将font/myFont.ttf 传递给setTextFontName()

在我使用 SDK B 的测试应用中,我将 myFont.ttf 放入 app/main/src/main/assets/font 并使用 sdk_b.setTextFontName("font/myFont.ttf") 进行设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2022-11-04
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多