You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 12.2 FireMonkey Android右上角悬浮弹出菜单实现问题

安卓平台Delphi应用实现悬浮式上下文菜单

在以安卓为主要平台的应用中,我使用常规MultiView控件作为菜单,希望实现点击右上角三点按钮时,弹出类似Firefox、WhatsApp安卓版的悬浮式上下文菜单。样式并非重点,我确信存在简单解决方案但尚未实现。当前使用Delphi 12.2,测试设备为搭载Android 13、14的三星手机。

已尝试以下方案但均未成功:

  • 常规Delphi PopUp Menu:在安卓上无法使用;
  • 绑定动画的TListBox:点击按钮可显示,但并非悬浮层,会导致UI移位,已测试ListBox的Align属性(右、无)及TabControl的Align属性(客户区、内容);
  • 绑定动画的TPanel:效果类似TListBox,无Z序。

三点按钮点击事件代码

// OnClick handler for the 3-dot button
// works, but moves all controls on my TTabControl to the left :-
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ListBoxMenu.Visible := not ListBoxMenu.Visible;
if ListBoxMenu.Visible then
   begin
   ListBoxMenu.ApplyStyleLookup;
   ListBoxMenu.RealignContent;
   end;
end;

FMX文件头部代码

// head of .fmx file
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  object ToolBar1: TToolBar
    Size.Width = 640.000000000000000000
    Size.Height = 46.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 0
    object SpeedButton1: TSpeedButton
      Align = Right
      Margins.Right = 5.000000000000000000
      Position.X = 589.000000000000000000
      Size.Width = 46.000000000000000000
      Size.Height = 46.000000000000000000
      Size.PlatformDefault = False
      StyleLookup = 'detailstoolbutton'
      Text = 'SpeedButton1'
      OnClick = SpeedButton1Click
    end
  end
  object ListboxMenu: TListBox
    Align = Right // also tried None
    Margins.Right = 30.000000000000000000
    Position.X = 528.000000000000000000
    Position.Y = 49.000000000000000000
    Size.Width = 107.000000000000000000
    Size.Height = 144.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 1
    Visible = False
    DisableFocusEffect = True
    DefaultItemStyles.ItemStyle = ''
    DefaultItemStyles.GroupHeaderStyle = ''
    DefaultItemStyles.GroupFooterStyle = ''
    Viewport.Width = 103.000000000000000000
    Viewport.Height = 140.000000000000000000
    object ListBoxItem1: TListBoxItem
      TabOrder = 0
      Text = 'MenuItem 0'
      OnClick = ListBoxItem1Click
    end
    object ListBoxItem2: TListBoxItem
      Position.Y = 19.000000000000000000
      TabOrder = 1
      Text = 'MenuItem 1'
    end
    object ListBoxItem3: TListBoxItem
      Position.Y = 38.000000000000000000
      TabOrder = 2
      Text = 'MenuItem 2'
    end
  end
  object TabControl1: TTabControl
    Align = Client // also tried Contents
    Size.Width = 640.000000000000000000
    Size.Height = 434.000000000000000000
    Size.PlatformDefault = False
    TabIndex = 1
    TabOrder = 4
    TabPosition = PlatformDefault
    Sizes = (
      640s
      408s
      640s
      408s)
    object TabItem1: TTabItem
      CustomIcon = <
        item
        end>
      TextSettings.Trimming = None
      IsSelected = False
      Size.Width = 69.000000000000000000
      Size.Height = 26.000000000000000000
      Size.PlatformDefault = False
      StyleLookup = ''
      TabOrder = 0
      Text = 'TabItem1'
      ExplicitSize.cx = 86.000000000000000000
      ExplicitSize.cy = 30.000000000000000000
    end

内容的提问来源于stack exchange,提问作者Mockminister

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:44:52