I'm playing with a ThreePages example that use TabControl. Sorry I can't find the original post so here is the code
I added in ModulePage1 the pg_resize event as I usually do, but seems not to work properly. The event is fired but pg.SafeAreaInsets contains all zeroes and the whole screen is alway occupied
What's wrong ?
Main module:
ub Process_Globals
Public App As Application
Public NavControl As NavigationController
Public TabControl As TabBarController
End Sub
Private Sub Application_Start (Nav As NavigationController)
Dim nativeobjectInstance As NativeObject
NavControl = Nav
TabControl.Initialize ("TabControl")
nativeobjectInstance = TabControl
nativeobjectInstance = nativeobjectInstance.GetField ("tabBar")
nativeobjectInstance.SetField ("tintColor", nativeobjectInstance.ColorToUIColor (0xFFFFFF00))
nativeobjectInstance.SetField ("unselectedItemTintColor", nativeobjectInstance.ColorToUIColor (0xFFFFFFFF))
nativeobjectInstance.SetField ("barTintColor", nativeobjectInstance.ColorToUIColor (0xFF000000))
TabControl.Pages = Array (CreateTabBarItem ("Chat", 0xF1D7, modulePage1), _
CreateTabBarItem ("Balance", 0xF24E, modulePage2), _
CreateTabBarItem ("Mail", 0xF003, modulePage3))
App.KeyController = TabControl
End Sub
Private Sub CreateTabBarItem (stringTitle As String, intIconCode As Int, modulePage As Object) As Page
Dim bitmapInstance As Bitmap
Dim pageInstance As Page
Dim tabBarItemInstance As TabBarItem
bitmapInstance = IconAwesome (intIconCode, Colors.Black, 30)
tabBarItemInstance.Initialize (stringTitle, bitmapInstance, bitmapInstance)
tabBarItemInstance.SetFont (Font.CreateNew (14))
pageInstance = CallSub (modulePage, "Initialize")
pageInstance.TabBarItem = tabBarItemInstance
Return pageInstance
End Sub
Private Sub IconAwesome (intCode As Int, intColor As Int, intIconSize As Int) As Bitmap
Dim bitmapInstance As Bitmap
Dim canvasInstance As Canvas
Dim floatFontSize As Float
Dim labelInvisible As Label
Dim panelInvisible As Panel
labelInvisible.Initialize ("")
labelInvisible.Text = Chr (intCode)
floatFontSize = intIconSize + 0.25
labelInvisible.Width = intIconSize + 1
Do While ((labelInvisible.Width > (intIconSize - 1)) Or (labelInvisible.Height > (intIconSize - 1)))
floatFontSize = floatFontSize - 0.25
labelInvisible.Font = Font.CreateFontAwesome (floatFontSize)
labelInvisible.SizeToFit
Loop
panelInvisible.Initialize ("")
panelInvisible.Width = intIconSize
panelInvisible.Height = intIconSize
canvasInstance.Initialize (panelInvisible)
canvasInstance.DrawText (Chr (intCode), (intIconSize - labelInvisible.Width) / 2, floatFontSize + (intIconSize - labelInvisible.Height) / 2, Font.CreateFontAwesome (floatFontSize), intColor, "")
bitmapInstance = canvasInstance.CreateBitmap
canvasInstance.Release
Return bitmapInstance
End Sub
ModulePage1:
Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Private pg As Page
End Sub
Public Sub Initialize As Page
Log("initialize")
pg.Initialize("pg")
pg.RootPanel.LoadLayout("layout1")
Return pg
End Sub
Private Sub pg_resize (Width As Int, Height As Int)
Log("Pagemain resize")
Dim r As Rect = pg.SafeAreaInsets
pg.RootPanel.SetLayoutAnimated(0, 1, r.Left, r.Top, Width - r.Right - r.Left, Height - r.Bottom - r.Top)
End Sub
I added in ModulePage1 the pg_resize event as I usually do, but seems not to work properly. The event is fired but pg.SafeAreaInsets contains all zeroes and the whole screen is alway occupied
What's wrong ?