Private Sub Class_Globals
Private MaxTextSize As Int = 80
Private Rate As Float
Private cvs As Canvas
Private su As StringUtils
End Sub
Public Sub Initialize(Act As Activity)
cvs.Initialize(Act)
End Sub
Public Sub TextWidth(TargetView As Object) As Int
Try
If TargetView = Null Then
Log("TextWidth")
Return 0
End If
Catch
Log("TextWidth")
Return 0
End Try
Dim lbl As Label = TargetView
Return cvs.MeasureStringWidth(lbl.Text, lbl.Typeface, lbl.TextSize)
End Sub
Private Sub CheckSize(TargetView As Object, MultipleLines As Boolean, NumLines As Int) As Boolean
Try
If TargetView = Null Then
Log("SingleLineNoLargerAndPadding")
Return True
End If
Catch
Log("SingleLineNoLargerAndPadding")
Return True
End Try
Dim lbl As Label = TargetView
Try
If MultipleLines Then
Dim txtHeight As Int = su.MeasureMultilineTextHeight(lbl, lbl.Text)
If NumLines > 0 Then
#if DebugX
Log("NumLines:" &NumLines &" txtHeight:" &txtHeight &" lbl.Height:" &lbl.Height &" EachLine:" &(lbl.Height / NumLines) &" TextSize:" &lbl.TextSize)
#end if
If txtHeight <= lbl.Height Or (lbl.Height / NumLines) >= txtHeight Then Return True
Return False
Else
If txtHeight > lbl.Height Then Return False
Return True
End If
Else
If cvs.MeasureStringWidth(lbl.Text, lbl.Typeface, lbl.TextSize) > lbl.Width Or _
su.MeasureMultilineTextHeight(lbl, lbl.Text) > lbl.Height Then
Return False
End If
Return True
End If
Catch
Return False
End Try
End Sub
Public Sub SingleLineNoLarger(TargetView As Object)
Try
If TargetView = Null Then
Log("SingleLineNoLarger")
Return
End If
Catch
Log("SingleLineNoLager")
Return
End Try
Dim lbl As Label = TargetView
Rate = lbl.TextSize
Do While Rate > 0.5
If CheckSize(lbl, False, 0) Then Exit
Rate = Floor(Rate *.95)
lbl.TextSize = Rate
Loop
End Sub
Public Sub SingleLineNoLargerAndPadding(TargetView As Object, Left As Int, Top As Int, Right As Int, Bottom As Int)
Try
If TargetView = Null Then
Log("SingleLineNoLargerAndPadding")
Return
End If
Catch
Log("SingleLineNoLargerAndPadding")
Return
End Try
Dim lbl As Label = TargetView
Dim Java_Object As JavaObject = lbl
Java_Object.RunMethod("setPadding", Array As Object(Left, Top, Right, Bottom))
SingleLineNoLarger(lbl)
End Sub