Public Sub getTruncatedString(sText As String, fFontSize As Float, iconWidth As Int, activity As Activity) As String
Private sRetString As String
Private cvsText As Canvas
Private fMaxLen As Float
Private fStringLen As Float
cvsText.Initialize(activity)
If cvsText.MeasureStringWidth(sText, Typeface.DEFAULT, fFontSize) <= (activity.Width - iconWidth) Then Return sText
fMaxLen = activity.Width - cvsText.MeasureStringWidth("ZZZ", Typeface.DEFAULT, fFontSize) - iconWidth
For iCnt = 0 To sText.Length - 1
sRetString = sText.SubString2(0, iCnt)
fStringLen = cvsText.MeasureStringWidth(sRetString, Typeface.DEFAULT, fFontSize)
If fStringLen >= fMaxLen Or (fStringLen = activity.Width And iCnt = sText.Length - 1) Then
Exit
End If
Next
If iCnt < sText.Length - 1 Then sRetString = $"${sRetString}..."$
Return sRetString
End Sub