B4J Tutorial TabPane Example

SS-2016-01-07_08.27.05.png


The TabPane container allows the user to switch between different tab pages.

Working with TabPane is similar to working with SplitPane. Each page is made of a different layout file.
The most important point is to use anchors in the pages layouts. This way the layouts will be resized automatically when the TabPane is resized.

For example the following code adds two pages. The second parameter is the tab title.
Tab1 and Tab2 are layout files.
B4X:
Expand Collapse Copy
Sub AppStart (Form1 As Form, Args() As String)
   MainForm = Form1
   MainForm.SetFormStyle("UNIFIED")
   MainForm.RootPane.LoadLayout("Main")
   TabPane1.LoadLayout("Tab1", "Tab 1")
   TabPane1.LoadLayout("Tab2", "Tab 2")
   MainForm.Show
End Sub

TabPane.LoadLayout returns a TabPage object. You can use this object to further configure the page.

The example is attached.
 

Attachments

Last edited:
Hi Erel,

thanks for this enhancement - very good.

Hint for those who already have been using tabpane prior B4J v1.06:
Change the tabpane type from Node to TabPane. This enables to use all the new properties and methods, like selectedindex, etc...

I noticed that the B4J Documentation has not been updated (yet).
 
No, i'm sorry. I asking about B4A, i need scroolview on tabhost or similar component.
 
How change the Width of tab? Or only change depending the name of tab? Thanks
 
Hello everyone,

In tabpane with 4 tabpage I have 4 headers (tab1 / tab2 / tab3 / tab4)

How can we do for a TAB HEADER is not clickable?
Move from tab enabled to disable stat of tab item ?

For example:

Public Tabpane1 As TabPane
Tabpane1.header(1).enabled = false '(This code is wrong it's just for example)


thank you,
 
You can disable all tabs except of one tab:
B4X:
Expand Collapse Copy
Sub DisableAllTabsExceptOf(TabPane As TabPane, page As TabPage)
   For Each tp As TabPage In TabPane.Tabs
     Dim jo As JavaObject = tp
     jo.RunMethod("setDisable", Array(tp <> page))
   Next
End Sub

Use this sub to disable all tabs except of the one you want to show.
 
Hi ,

How can i set the image height and width if i load the image from database ?
my code :
B4X:
Expand Collapse Copy
inputstreamDept.InitializeFromBytesArray(bufferImgDept,0,bufferImgDept.Length)
            Dim bmpDept As Image
            bmpDept.Initialize2(inputstreamDept)
            page.Image=bmpDept
on this way the image doesn't fit in tab.
i'd like to use page.Image=fx.LoadImageSample(????,height,width)
 
Last edited:
Create an ImageView with the desired size and set this image to the ImageView.
Use this code to add the ImageView to the TabPage:
B4X:
Expand Collapse Copy
Dim jo As JavaObject = TabPage1
jo.RunMethod("setGraphic", Array(ImageView1))
Thank you it works
 
Back
Top