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
相关产品推荐
相关产品推荐

