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:
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

  • TabPane.zip
    6.8 KB · Views: 1,839
Last edited:

rwblinn

Well-Known Member
Licensed User
Longtime User
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).
 

luciano deri

Active Member
Licensed User
Longtime User
No, i'm sorry. I asking about B4A, i need scroolview on tabhost or similar component.
 

delozoya

Member
Licensed User
Longtime User
How change the Width of tab? Or only change depending the name of tab? Thanks
 

CHAUVET

Member
Licensed User
Longtime User
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,
 

Erel

B4X founder
Staff member
Licensed User
Longtime User
You can disable all tabs except of one tab:
B4X:
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.
 

StarinschiAndrei

Active Member
Licensed User
Longtime User
Hi ,

How can i set the image height and width if i load the image from database ?
my code :
B4X:
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:

StarinschiAndrei

Active Member
Licensed User
Longtime User
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:
Dim jo As JavaObject = TabPage1
jo.RunMethod("setGraphic", Array(ImageView1))
Thank you it works
 
Top