我正在try 在字符串数组中使用占位符(每个项目都将使用相同的值).

<string-array name="distance_rating_labels">
    <item>&lt; 5 %s</item>
    <item>&lt; 10 %s</item>
    <item>&lt; 15 %s</item>
</string-array>

在这里,我想根据运行时传递的距离度量返回< 5 km< 5 miles. 我知道这可以通过将它们拆分成字符串并在运行时传递距离度量来完成,如下所示

<string name="less_than_5">&lt; 5 %s</string>

但是,使用数组可以做到这一点吗? 任何帮助都将不胜感激.

推荐答案

Resources.getString(id, formatArgs)的源代码(方法Context.getString(id, formatArgs)代理)如下所示:

@NonNull
public String getString(@StringRes int id, Object... formatArgs) throws NotFoundException {
    final String raw = getString(id);
    return String.format(mResourcesImpl.getConfiguration().getLocales().get(0), raw,
            formatArgs);
}

因此,您可以执行以下操作:

val resources = context.resources
val rawLabels = resources.getStringArray(R.array.distance_rating_labels)
val currentLocale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
    resources.configuration.locales.get(0)
else
    resources.configuration.locale
val distance = String.format(currentLocale, rawLabels[index], arg)

Android相关问答推荐

合成 colored颜色 的GSON反序列化

滚动屏幕时更改按钮外观

约束布局:垂直链中的视图应将内容包裹到空间的1/3

我到底应该如何分享我的应用程序中的图片?

在Android Studio中,如何在BuildSrc Dependenices Kotlin文件中指定时标记与旧版本的依赖关系

可组合函数无限地从视图模型获取值

是否可以在 compose 中使用三次贝塞尔曲线进行动画?

Android - 如何使 TextInputEditText 的高度恰好为 2 行?

如何在 Jetpack Compose 中对数据类进行 Parcelize

通过 setIntentScanningStrategyEnabled(true) 未检测到信标的 Android Beacon 库后台扫描

根据另一个数组的值对数组进行排序

为什么项目捕获对象给我在 Compose 中找不到参考

Jetpack Compose 动画性能问题

如何在屏幕旋转或系统主题更改后将光标移动到 TextField 的末尾并保持键盘显示?

Android Compose:LazyColumn 和 Column with verticalScroll 的区别

如何使用文件提供程序将视频从一个应用程序共享到另一个应用程序?

Jetpack 组合和片段

Google Play 控制台您的应用是否使用广告 ID?

使 Compose LazyColumn 的最后一项填满屏幕的其余部分

Android Studio,Db 连接错误:发生异常情况导致驱动程序失败.请报告此异常