Hi gang
B4A Github Repo
For anyone beginning with b4a, they would want to know what UI components are available that come built in with b4a and can be used right out of the box?
So Iv'e compiled this based on the latest version of b4a for anyone to be up to speed. Hope its helpful.
Rule: Designer = Yes means the control can be dropped on a layout in the Abstract Designer (configurable properties in the Designer). Designer = No means code-only (Initialize + AddView).
Core views (Core library)
Custom views (ViewsEx, TabStripViewPager, ExoPlayer, xCustomListView)
B4X custom views (XUI Views + satellites)
Added via Designer → Add View → CustomView. All render into a base Panel (B4XView); canvas-drawn ones paint via B4XCanvas / BitmapCreator.
B4X cross-platform types (helpers and foundation)
Non-view B4X* types from the same libraries — code-only, shared across B4A / B4i / B4J. (View-type B4X* controls live in the tables above.)
Not shipped types: B4XMainPage (implemented by the app, not a library), B4XTypes (debug bridge internals).
Code-only UI managers
Built and wired in code — not Designer surfaces.
Foundation: XUI drawing stack (XUI library)
The canvas-drawn controls above share one cross-platform drawing stack.
Notes
#SharingTheGoodness
B4A Github Repo
For anyone beginning with b4a, they would want to know what UI components are available that come built in with b4a and can be used right out of the box?
So Iv'e compiled this based on the latest version of b4a for anyone to be up to speed. Hope its helpful.
Rule: Designer = Yes means the control can be dropped on a layout in the Abstract Designer (configurable properties in the Designer). Designer = No means code-only (Initialize + AddView).
Core views (Core library)
| Control | Based On | Category | Designer |
|---|---|---|---|
| Button | android.widget.Button | Actions | Yes |
| Label | android.widget.TextView | Text | Yes |
| EditText | android.widget.EditText | Forms | Yes |
| AutoCompleteEditText | android.widget.AutoCompleteTextView | Forms | Yes |
| ImageView | android.widget.ImageView | Media | Yes |
| Panel | android.view.ViewGroup (layout container, base for custom views) | Containment | Yes |
| CheckBox | android.widget.CheckBox | Selection | Yes |
| RadioButton | android.widget.RadioButton | Selection | Yes |
| ToggleButton | android.widget.ToggleButton | Selection | Yes |
| ListView | android.widget.ListView | Containment | Yes |
| Spinner | android.widget.Spinner | Selection | Yes |
| ScrollView | android.widget.ScrollView | Containment | Yes |
| HorizontalScrollView | android.widget.HorizontalScrollView | Containment | Yes |
| SeekBar | android.widget.SeekBar | Selection | Yes |
| ProgressBar | android.widget.ProgressBar | Feedback | Yes |
| WebView | android.webkit.WebView | Containment | Yes |
| TabHost | android.widget.TabHost | Navigation | Yes |
Custom views (ViewsEx, TabStripViewPager, ExoPlayer, xCustomListView)
| Control | Based On | Category | Designer |
|---|---|---|---|
| Switch | ViewsEx · android.widget.Switch | Selection | Yes |
| RatingBar | ViewsEx · android.widget.RatingBar | Selection | Yes |
| FloatLabeledEditText | ViewsEx · FloatLabeledEditText third-party view over a native EditText | Forms | Yes |
| TabStrip | TabStripViewPager · androidx.viewpager.widget.ViewPager + sliding tab strip | Navigation | Yes |
| VideoView | Audio · android.widget.VideoView (+ MediaController) | Media | No (code) |
| AdView | FirebaseAdMob · com.google.android.gms.ads.AdView banner (NativeExpressAdView sibling; InterstitialAd / RewardedVideoAd are full-screen, not layout controls) | Communication | No (code) |
| SimpleExoPlayerView | ExoPlayer · androidx.media3.ui.PlayerView (SimpleExoPlayer is the non-visual controller) | Media | Yes |
| CustomListView | xCustomListView · B4A class over ScrollView / HorizontalScrollView with item panels | Containment | Yes |
| GameView | GameView · custom canvas-drawn View (Bitmap + Canvas + Paint loop) | Game / Canvas | No (code) |
| TouchPanel | ViewsEx · code-created touch-intercept Panel | Containment | No (code) |
B4X custom views (XUI Views + satellites)
Added via Designer → Add View → CustomView. All render into a base Panel (B4XView); canvas-drawn ones paint via B4XCanvas / BitmapCreator.
| Control | Based On | Category | Designer |
|---|---|---|---|
| AnimatedCounter | XUI Views · B4XCanvas frame animation over labels (digit ticker) | Feedback | Yes |
| AnotherProgressBar | XUI Views · BitmapCreator + B4XCanvas bar on an ImageView container | Feedback | Yes |
| B4XBreadCrumb | XUI Views · B4XCanvas-drawn crumb path on a Panel with touch handling | Navigation | Yes |
| B4XComboBox | XUI Views · native Spinner + action button | Selection | Yes |
| B4XFloatTextField | XUI Views · native EditText + canvas-drawn floating hint, clear/accept/reveal buttons | Forms | Yes |
| B4XImageView | XUI Views · ImageView + bitmap (resize modes, round, corners) | Media | Yes |
| B4XLoadingIndicator | XUI Views · B4XCanvas-drawn animated indicator (7 styles) | Feedback | Yes |
| B4XPlusMinus | XUI Views · label stepper on a Panel (orientation, cyclic, rapid change) | Selection | Yes |
| B4XRadioButton | XUI Views · BitmapCreator-drawn glyph on an ImageView container | Selection | Yes |
| B4XSeekBar | XUI Views · B4XCanvas-drawn track + touch Panel (min/max/interval) | Selection | Yes |
| B4XSwitch | XUI Views · BitmapCreator-drawn track/thumb on an ImageView container | Selection | Yes |
| RoundSlider | XUI Views · B4XCanvas-drawn circular track on a Panel | Selection | Yes |
| ScrollingLabel | XUI Views · B4XCanvas-drawn auto-scrolling text | Text | Yes |
| SwiftButton | XUI Views · B4XCanvas-drawn 3D button (primary/secondary/disabled, side height) | Actions | Yes |
| MadeWithLove | XUI Views · static Label badge | Text | Yes |
| B4XTable | B4XTable · CustomListView rows + header Panels over a SQLite query | Containment | Yes |
| BBCodeView | BCTextEngine · BCTextEngine + BitmapCreator rich-text rendering on a ScrollView | Text | Yes |
| BBLabel | BCTextEngine · BCTextEngine + BitmapCreator rich-text rendering on a Panel | Text | Yes |
| B4XGifView | B4XGifView · FLAnimatedImageView animated drawable on a Panel (ImageView fallback, SetGif / SetGif2) | Media | Yes |
| B4XTurtle | B4XTurtle · BitmapCreator canvas layers composited into an ImageView | Game / Canvas | Yes |
| ScoreLabel | X2 · game HUD Labels on a Panel | Game / Canvas | Yes |
B4X cross-platform types (helpers and foundation)
Non-view B4X* types from the same libraries — code-only, shared across B4A / B4i / B4J. (View-type B4X* controls live in the tables above.)
| Type | Based On | Category | Designer |
|---|---|---|---|
| B4XView | XUI · universal wrapper over the native View | Framework | No (code) |
| B4XCanvas | XUI · android.graphics.Canvas via the Core canvas implementation (see Foundation below) | Drawing | No (code) |
| B4XPath / B4XRect / B4XFont / B4XBitmap | XUI · companion types of B4XView (Path / Rect / Typeface / Bitmap) | Drawing | No (code) |
| B4XSet | B4XCollections · ordered set (Add / Remove / Contains) | Data | No (code) |
| B4XOrderedMap | B4XCollections · insertion-ordered key-to-value map | Data | No (code) |
| B4XCollections | B4XCollections · factory (CreateSet / CreateOrderedMap / CreateBitSet) | Data | No (code) |
| B4XComparatorSort | B4XCollections · quicksort with custom comparator | Data | No (code) |
| B4XCache | B4XCollections · size-capped cache (Get / Put / MaxSize) | Data | No (code) |
| B4XBytesBuilder | B4XCollections · growable byte array (Append / ChangeLength) | Data | No (code) |
| B4XBitSet | B4XCollections · bit array (Set / Get / Size) | Data | No (code) |
| CopyOnWriteList / CopyOnWriteMap | B4XCollections · thread-safe list / map | Data | No (code) |
| B4XFormatter | B4XFormatter · number/date format definitions (drives B4XPlusMinus) | Format | No (code) |
| B4XSerializator | RandomAccessFile · cross-platform object serializer | Data | No (code) |
| B4XCipher | B4XEncryption · symmetric cipher | Security | No (code) |
Code-only UI managers
Built and wired in code — not Designer surfaces.
| Feature | Based On | Category | Use |
|---|---|---|---|
| B4XDrawer | B4XDrawer · left/center/dim Panels with gesture handling | Navigation | side drawer: Initialize + panels + Resize |
| PreoptimizedCLV | PreoptimizedCLV · CustomListView + B4XSeekBar fast-scroll overlay | Containment | performance helper wrapping a CustomListView |
| B4XDialog + templates | XUI Views · Panels + CustomListView / text fields (Date, Input, List, Color, Search, Signature, Timed, LongText, progress) | Communication / Pickers / Forms | modal ShowDialog pattern |
| PreferencesDialog | B4XPreferencesDialog · CustomListView + B4XDialog + item templates with built-in item layouts | Communication / Forms | settings form generator (AddBooleanItem / AddTextItem / … / ShowDialog) |
| BCToast | BCToast · BBLabel (BCTextEngine rendering) on a Panel | Communication | transient Show message |
| SimpleMediaManager | SimpleMediaManager · async bitmap loader + SimpleExoPlayerView / video views | Media | media loader wired to existing panels/ImageViews in code |
| B4XPages | B4XPages · Activity/Form page framework (B4XPagesManager) | Navigation | page framework, not a control |
| X2 engine | X2 · BitmapCreator sprites + Box2D physics on GameView | Game / Canvas | sprite/tile engine, code-driven |
| MediaChooser | MediaChooser · camera capture + ContentChooser intents, runtime permission check, keep-alive service | Media | CaptureImage / CaptureVideo / ChooseImage / ChooseVideo (resumable, returns MediaChooserResult); temp-file cleanup |
| NB6 | NB6 · Notification builder helper | Communication | notifications helper, not a View |
Foundation: XUI drawing stack (XUI library)
The canvas-drawn controls above share one cross-platform drawing stack.
- B4XView — universal view wrapper. Every native view (Button, Label, Panel, …) is addressable through the same B4XView API, which is why B4X custom views accept any view as their base.
- B4XCanvas — drawing surface bound to a view via Initialize(View). Primitives: DrawLine / DrawRect / DrawCircle / DrawPath / DrawBitmap (each plain + rotated), DrawText (+ rotated), MeasureText, ClipPath / RemoveClip, ClearRect. Invalidate flushes to screen; Resize / Release manage its lifecycle. Companion types: B4XPath (lines, ovals, arcs, rounded rects), B4XRect, B4XFont, B4XBitmap. Based on: android.graphics.Canvas + Bitmap + Paint / Path / Rect, via the Core canvas implementation it delegates every draw call to (B4XCanvas → core canvas → native canvas, bound to the target view).
- BitmapCreator (BitmapCreator library) — offscreen bitmap + software canvas. Controls that pre-render (AnotherProgressBar, B4XSwitch, B4XRadioButton, B4XTurtle layers, BBCodeView / BBLabel text) draw into a BitmapCreator and blit the result to an ImageView container.
- Controls in this report built on this stack: AnimatedCounter, AnotherProgressBar, B4XBreadCrumb, B4XLoadingIndicator, B4XPlusMinus, B4XRadioButton, B4XSeekBar, B4XSwitch, RoundSlider, ScrollingLabel, SwiftButton, B4XFloatTextField (hint), B4XTurtle, BBCodeView, BBLabel.
Notes
- B4X custom views are added via Designer → Add View → CustomView; Java custom views (ViewsEx, TabStripViewPager, SimpleExoPlayerView, CustomListView) support the Visual Designer the same way.
- Non-visual libraries shipped alongside (Phone, GPS, BLE2, Serial, SQL, OkHttp, Firebase* services, USB, Audio players, Camera, …) expose no layout controls and are excluded — same as the reference repo, which lists only widgets. Deliberately excluded UI-adjacent items: PreferenceScreen / PreferenceCategory (full-screen settings, not layout views), IME (keyboard helper), Camera preview (hosted on a Panel, no standalone View), ContentChooser (activity starter), full-screen ads, B4XMainPage (app-implemented) and B4XTypes (debug internals).
- Totals: 17 core + 10 custom views + 21 B4X Designer views + 14 B4X helper/foundation types + 10 code-only managers ≈ 72 entries.
#SharingTheGoodness
Last edited: