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

Delphi 11.2升级后安卓应用标准按钮样式异常求助

Delphi 11.2安卓应用按钮样式异常问题的原因与解决方法

问题原因

Delphi 11.2对Android平台的FMX控件样式做了Material Design 3适配更新,默认按钮(包括Tab按钮)的样式被替换为亮蓝色双层边框设计。设置StyleName为"buttonstyle"无效,是因为新版本的样式命名规则或优先级逻辑发生了变化,原有样式映射不再生效。

解决方法

1. 自定义按钮样式覆盖默认效果

  • 添加StyleBook组件到项目,右键选择"Edit Style..."进入样式编辑器
  • 找到ButtonStyle并复制一份,重命名为CustomButtonStyle
  • 修改该样式的边框属性:设置Stroke.Kind为Solid,Stroke.Color设为原浅蓝色,Thickness改为1;同时调整Fill.Color为原蓝色
  • 将所有按钮的StyleName设置为这个自定义样式名

2. 回退到旧版本默认样式

  • 找到Delphi安装目录下的FMX.Style.MaterialAndroid.pas(路径一般为C:\Program Files (x86)\Embarcadero\Studio\22.0\source\fmx)
  • 备份文件后,打开并查找ButtonStyle的定义,删除双层边框相关设置,恢复为旧版本的单一浅蓝边框逻辑
  • 重新编译项目使修改生效

3. 代码动态调整按钮样式

给所有按钮绑定OnCreate事件,通过代码直接覆盖样式属性:

procedure TMainForm.ButtonCreateHandler(Sender: TObject);
var
  LBtn: TButton;
begin
  LBtn := Sender as TButton;
  // 设置背景色为原蓝色
  LBtn.Fill.Color := $FF2196F3;
  // 设置外层边框
  LBtn.Border.Stroke.Kind := TBrushKind.Solid;
  LBtn.Border.Stroke.Color := $FFBBDEFB;
  LBtn.Border.Thickness := 1;
  // 关闭内层边框,取消双层效果
  LBtn.Border.InnerStroke.Kind := TBrushKind.None;
end;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:35:24