【问题标题】:Jetpack compose bold only string placeholderJetpack 撰写仅粗体字符串占位符
【发布时间】:2021-11-09 16:57:54
【问题描述】:

我有这样的字符串资源

<string name="my_string">Fancy string with an %1$s placeholder</string>

我想将其作为输出:“带有 amazing 占位符的花式字符串”。占位符内容为粗体的字符串。

我怎样才能得到想要的输出?

【问题讨论】:

    标签: android android-jetpack-compose


    【解决方案1】:

    最后我得到了想要的结果

    val placeholder = "Amazing"
    
    val globalText = stringResource(id = R.string.my_string, placeholder)
    
    val start = globalText.indexOf(placeholder)
    val spanStyles = listOf(
        AnnotatedString.Range(SpanStyle(fontWeight = FontWeight.Bold),
            start = start,
            end = start + placeholder.length
        )
    )
    Text(text = AnnotatedString(text = globalText, spanStyles = spanStyles))
    

    【讨论】:

      【解决方案2】:

      假设您在 Text composable 中显示此内容,请执行此操作。确保在 $ 字符之前包含反斜杠:

      Row(modifier = Modifier.wrapContentWidth()) {
          val s = LocalContext.current.getString(R.string.my_string)
          val p = s.indexOf("%1\$s")
          Text(s.substring(0, p))
          Text("amazing", fontWeight = FontWeight.Bold)
          Text(s.substring(p + 4))
      }
      

      【讨论】:

      • 我无法修改字符串资源
      • 您没有表示不能修改资源。您也没有说明此文本的显示方式。我假设它是可组合的文本。我在上面更新了我的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2014-03-15
      相关资源
      最近更新 更多