This is a simple cross platform Popup Menu.
I spend a lot of time in creating views, like this and to create a high quality view cost a lot of time. If you want to support me and further views, then you can do it here by Paypal or with a coffee.
Left: B4J Right: B4A
ASPopupMenu
Author: Alexander Stolte
Version: 1.08
I spend a lot of time in creating views, like this and to create a high quality view cost a lot of time. If you want to support me and further views, then you can do it here by Paypal or with a coffee.
Left: B4J Right: B4A
[B4X] AS PopupMenu with icons
https://www.b4x.com/android/forum/threads/b4x-xui-as-popup-menu.121832/ Private Sub ShowMenu aspm_Main.Initialize(Root,Me,"aspm_Main") aspm_Main.MenuCornerRadius = 10dip aspm_Main.ItemLabelProperties.TextAlignment_Horizontal = aspm_Main.OrientationHorizontal_LEFT...
www.b4x.com
Fast example:
aspm_MoreOptions.Initialize(Root,Me,"aspm_MoreOptions")
aspm_MoreOptions.ItemLabelProperties.ItemBackgroundColor = xui.Color_ARGB(255,19, 20, 22) 'Change the Background Color of the item
aspm_MoreOptions.AddMenuItem("Share location",1)'Add item
aspm_MoreOptions.AddMenuItem("Settings",2)'Add item
aspm_MoreOptions.OrientationHorizontal = aspm_MoreOptions.OrientationHorizontal_RIGHT
aspm_MoreOptions.OrientationVertical = aspm_MoreOptions.OrientationVertical_BOTTOM
aspm_MoreOptions.ItemLabelProperties.BackgroundColor = xui.Color_ARGB(200,0,0,0)'black
aspm_MoreOptions.OpenMenu(xlbl_MoreOptions,150dip)
Author: Alexander Stolte
Version: 1.08
- ASPM_ItemLabelProperties
- Fields:
- BackgroundColor As Int
- IsInitialized As Boolean
Tests whether the object has been initialized. - ItemBackgroundColor As Int
- LeftRightPadding As Float
- TextAlignment_Horizontal As String
- TextAlignment_Vertical As String
- TextColor As Int
- xFont As B4XFont
- Functions:
- Initialize
Initializes the fields to their default value.
- Initialize
- Fields:
- ASPM_TitleLabelProperties
- Fields:
- BackgroundColor As Int
- Height As Float
- IsInitialized As Boolean
Tests whether the object has been initialized. - ItemBackgroundColor As Int
- LeftRightPadding As Float
- TextAlignment_Horizontal As String
- TextAlignment_Vertical As String
- TextColor As Int
- xFont As B4XFont
- Functions:
- Initialize
Initializes the fields to their default value.
- Initialize
- Fields:
- ASPopupMenu
- Events:
- ItemClicked (Index As Int, Tag As Object)
- Fields:
- AutoHideMs As Int
- CloseDurationMs As Int
- OpenDurationMs As Int
- Functions:
- AddMenuItem (text As String, tag As Object) As String
- AddTitle (Text As String, height As Float) As String
- Class_Globals As String
- Clear As String
clears the list - CloseMenu As String
- CreateASPM_ItemLabelProperties (TextColor As Int, xFont As B4XFont, TextAlignment_Vertical As String, TextAlignment_Horizontal As String, BackgroundColor As Int, ItemBackgroundColor As Int, LeftRightPadding As Float) As ASPM_ItemLabelProperties
- CreateASPM_TitleLabelProperties (TextColor As Int, xFont As B4XFont, TextAlignment_Vertical As String, TextAlignment_Horizontal As String, BackgroundColor As Int, ItemBackgroundColor As Int, LeftRightPadding As Float, Height As Float) As ASPM_TitleLabelProperties
- getBase As B4XView
- getisOpen As Boolean
checks if the menu is open - getItemLabelProperties As ASPM_ItemLabelProperties
change the label properties, call it before you add items
<code>ASScrollingTags1.LabelProperties.xFont = xui.CreateDefaultBoldFont(15)</code> - GetMenuItemAt_Background (index As Int) As B4XView
gets a menu item background (parent of label) - GetMenuItemAt_Label (index As Int) As B4XView
gets a menu item label - the label with the text - getOrientationHorizontal_LEFT As String
- getOrientationHorizontal_MIDDLE As String
- getOrientationHorizontal_RIGHT As String
- getOrientationVertical_BOTTOM As String
- getOrientationVertical_TOP As String
Vertical = Top,Bottom
Horizontal = Left,Middle,Right - getSize As Int
gets the list size - getTitleLabelProperties As ASPM_TitleLabelProperties
change the label properties, call it before you add the title
<code>ASScrollingTags1.TitleLabelProperties.xFont = xui.CreateDefaultBoldFont(20)</code> - Initialize (Parent As B4XView, CallBack As Object, EventName As String) As String
Initializes the object. You can add parameters to this method if needed. - IsInitialized As Boolean
Tests whether the object has been initialized. - OpenMenu (view As B4XView, width As Float)
Opens the menu on a view - OpenMenu2 (parent As B4XView, width As Float)
Open the menu on center of parent/view - RemoveTitle As String
Removes the title if exists - Resize (parent_width As Float, parent_height As Float) As String
- setActivityHasActionBar (value As Boolean) As String
- setCloseAfterItemClick (enabled As Boolean) As String
closes the menu automatically after clicking on an item
standard is True - setDividerColor (color As Int) As String
the color of the dividers - setDividerEnabled (enable As Boolean) As String
Adds or Removes the dividers - setDividerHeight (height As Float) As String
the height of the dividers - setIsInSpecialContainer (value As Boolean) As String
set it true if the target is on a listview or as a child on a panel where the left and top values differ from the form - setItemBackgroundColor (crl As Int) As String
sets the item background color for all items - setMenuCornerRadius (radius As Int) As String
- setOrientationHorizontal (orientation As String) As String
- setOrientationVertical (orientation As String) As String
- ViewScreenPosition (view As B4XView) As Int()
- Properties:
- ActivityHasActionBar
- Base As B4XView [read only]
- CloseAfterItemClick
closes the menu automatically after clicking on an item
standard is True - DividerColor
the color of the dividers - DividerEnabled
Adds or Removes the dividers - DividerHeight
the height of the dividers - IsInSpecialContainer
set it true if the target is on a listview or as a child on a panel where the left and top values differ from the form - isOpen As Boolean [read only]
checks if the menu is open - ItemBackgroundColor
sets the item background color for all items - ItemLabelProperties As ASPM_ItemLabelProperties [read only]
change the label properties, call it before you add items
<code>ASScrollingTags1.LabelProperties.xFont = xui.CreateDefaultBoldFont(15)</code> - MenuCornerRadius
- OrientationHorizontal
- OrientationHorizontal_LEFT As String [read only]
- OrientationHorizontal_MIDDLE As String [read only]
- OrientationHorizontal_RIGHT As String [read only]
- OrientationVertical
- OrientationVertical_BOTTOM As String [read only]
- OrientationVertical_TOP As String [read only]
Vertical = Top,Bottom
Horizontal = Left,Middle,Right - Size As Int [read only]
gets the list size - TitleLabelProperties As ASPM_TitleLabelProperties [read only]
change the label properties, call it before you add the title
<code>ASScrollingTags1.TitleLabelProperties.xFont = xui.CreateDefaultBoldFont(20)</code>
- Events:
- 1.00
- Release
- 1.01
- Adds background_color global variable - the background color of the parent view during the menu is open
- Adds setItemBackgroundColor - change the items background color
- Better Handling in "Nested Layouts"
- Add ActivityHasActionBar - set to true if you have a ActionBar enabled
- Add IsInSpecialContainer - set it true if the target is on a listview or as a child on a panel where the left and top values differ from the form
- Add setOrientationVertical
- Add setOrientationHorizontal
- Adds "Enums" for Orientations -TOP,BOTTOM -LEFT,MIDDLE,RIGHT
- 1.02
- Add OpenMenu2 - Opens the menu in center of the parent view
- Add Clear - clear all
- Add getBase - gets the base view to customize it
- Add getLabelProperties - customize it if you want, before you add a new menu item
- this is now possible
aspm_main.LabelProperties.ItemBackgroundColor = xui.Color_ARGB(255,Rnd(1,256), Rnd(1,256), Rnd(1,256))
- Remove background_color and itembackground_color
- Added to getLabelProperties
- Add GetMenuItemAt_Label
- Add GetMenuItemAt_Background
- Add getSize
- Add setMenuCornerRadius - sets the corner radius for the menu (
works only in B4A and B4I)
- 1.03
- Add LeftRightPadding to ASPM_LabelProperties - label padding to have more space left and right for example HorizontalCenter = LEFT
- OpenMenu the background is now smoother on show
- setMenuCornerRadius is now available on B4J (thanks @Erel)
- 1.04
- getLabelProperties is renamed to getItemLabelProperties
- Add AddTitle - you can now add a title to the menu
- Add TitleLabelProperties - you can change the title properties with it
- Add RemoveTitle - Removes the title if exists
- Add AutoHideMs
- Add DividerEnabled - you can now show dividers between the items
- Add DividerHeight - the height of the dividers
- Add DividerColor - the color of the dividers
- 1.05
- OpenMenu Show Animation with the background is now animated
- BugFixes
- 1.06
- BugFixes
- 1.07
- Add get isOpen - checks if the menu is open
- BugFix - if you called OpenMenu several times without closing the menu, then the menu was added several times
- Add set CloseAfterItemClick - closes the menu automatically after clicking on an item
- standard is True
- Add set and get CloseDurationMs - the duration it takes for the menu to be completely closed
- Add set and get OpenDurationMs - the duration it takes for the menu to be fully visible
- 1.08
- Intern Function IIF renamed to iif2
- 1.09
- Add set MenuViewGap - sets the gap between the menu and the attached view
- Add get TriangleProperties
- Add set ShowTriangle - only visible if you open the menu with OpenMenu
- Default: False
- 1.10
- BugFix
- 1.11
- Add OpenMenuAdvanced - You can set the Left, Top and Width value to show the menu on the parent
- Add MenuHeight - gets the MenuHeight even if the menu is not yet visible
- BugFixes
- 1.12 (read more)
- Add get and set ClickColor
- Add get and set BackgroundPanelColor
- B4J Only - Hover Over Item with color
- 1.13 (read more)
- Add AddMenuItemWithIcon
- Add get IconProperties
- Add get and set ItemHeight
- 1.14
- Text can now be multiline
- 1.15
- B4I Improvements - the entire screen is now used for the background shadow
- When the navigation bar was hidden, there was an area at the top that did not go dark when the menu was opened
- The height of the area is now determined and the gap closed
- B4XPages is now required in B4I
- B4I Improvements - the entire screen is now used for the background shadow
Attachments
Last edited: