Delphi FireMonkey中如何在TMapView上方添加常驻可点击按钮
解决方案
根本原因
Android端的TMapView属于原生平台控件,采用独立的系统Surface层渲染,渲染优先级远高于FMX框架实现的普通控件(含TImage、普通TButton等)。设计器内调整的Z轴层级仅对同类型FMX控件生效,因此无论调整TImage的父容器属性还是层级,都会在地图渲染完成后被覆盖。
实现方案
不要使用TImage实现该需求,FMX自带对应专用组件:
- 选择
TFloatingActionBar组件即可,该组件专门用于实现类谷歌地图的悬浮按钮效果,Android端默认渲染层级高于所有原生控件(包括TMapView),不会被覆盖。
配置步骤:
- 在窗体上添加
TFloatingActionBar,设置父级为TForm,不要作为TMapView的子控件。 - 给组件的
Image属性赋值自定义的按钮图片。 - 调整
Position属性将按钮放到你需要的悬浮位置(例如下方右下角)。 - 绑定
OnClick事件实现对应的点击交互逻辑即可。
如果需要多组悬浮按钮,可以配合TActionList给TFloatingActionBar添加子按钮项,实现展开式悬浮菜单效果。
内容的提问来源于stack exchange,提问作者user15720529
相关产品推荐
相关产品推荐

