簡體   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