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

时间:2018-08-21 19:40:50

标签: android unicode kotlin

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

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

2 个答案:

答案 0 :(得分:4)

您可以将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)

我发现this是帮助我理解Spannable Strings的好资源。

答案 1 :(得分:1)

我需要在字符串的各个位置(即,并非总是在字符串的相同位置)处放大数学脚本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个字符,并且您不介意更改用户的垂直间距,就可以使用上述答案生成不同大小的代理对。界面。