繁体   English   中英

要增加字符串中的unicode代理对符号(例如数学i符号)的大小

[英]Want to increase the size of unicode surrogate pair symbol, e.g., the mathematical i symbol, within a string

我正在Android Studio 3.1.4中的Kotlin中编程。 我有包含数学i符号的字符串。 我只想增加符号的大小,而不要增加字符串中其余文本的大小。 数学上,我需要一个unicode代理对,我最近才学会了如何显示。 我担心这会使事情变得比仅在单个字符串中包含两个单独的字体要复杂得多。 整个字符串显示在viewText小部件中。

注意:我正在尝试将SpannableString与RelativeSizeSpan结合使用,如下面的答案所示。 我希望了解这如何适用于unicode代理对。 谢谢。

您可以将SpannableStringRelativeSizeSpan一起使用以调整无穷大符号的大小。

例如,我们可以这样调整&符号的大小:

var styledString = SpannableString("Hello & welcome")
// 6 and 7 are the start and end index of the & sign
styledString.setSpan(new RelativeSizeSpan(2f), 6, 7, 0)
textView.setText(styledString)

我发现是一个很好的资源,可以帮助我理解Spannable Strings。

我需要在字符串中的各个位置放大数学脚本i,即不总是在字符串中的相同位置。 因此,这是有效的代码:

    numerator = "Surrogate pair test: "
    var len: Int = numerator.length
    val iScript: String = "\uD835\uDCBE"
    numerator = numerator + iScript + iScript + " End of test."
    var styledString = SpannableString(numerator)
    var sizeI: Float = 4.0f
    styledString.setSpan(RelativeSizeSpan(sizeI), len, len+2, 0)
    txtV_Numerator3.setText(styledString)

请注意,出于测试目的,我在字符串“分子”中连续放置了两个代理对。 我需要在setSpan构造中使用“ len + 2”,以便将第一个代理对打印为正常大小的4倍。 毫不奇怪,在setSpan构造中使用“ len + 4”将两个替代对都打印为正常大小的4倍。 使用“ len + 1”或“ len + 3”会产生难看的结果,并带有较大的问号。

我还注意到,更改代理对的大小(即大)会更改用户界面中的垂直间距。 也就是说,大小的变化也改变了我活动的textView小部件之间的垂直间距。 为此,将需要进行其他编程。

结论:只要允许每个代理对的长度为2个字符,并且只要您不介意更改用户界面的垂直间距,就可以使用上述答案生成不同大小的代理对。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM