Delphi开发Wear OS应用:AndroidManifest自定义样式引用报错问题求助
解决AndroidManifest中引用自定义样式的错误问题
你遇到的问题核心是Android的资源规则不允许在AndroidManifest.xml中直接定义样式资源——<resources>和<style>标签必须放在项目的res/values/目录下的专用XML文件里,Manifest只能引用已存在的资源,不能内嵌定义。
具体解决步骤:
创建/修改样式资源文件
在你的Delphi Android项目中,找到(或新建)res/values/styles.xml文件(如果没有res/values目录,手动创建这两个层级目录),将样式定义移到这里:<?xml version="1.0" encoding="utf-8"?> <resources> <style name="Themeabc" parent="@android:style/Theme.DeviceDefault.Light"> <item name="android:windowSwipeToDismiss">false</item> </style> </resources>额外提示:如果是Wear OS应用,推荐使用穿戴设备专属的父主题,比如
@android:style/Theme.DeviceDefault.Wear,适配性会更好。修正AndroidManifest中的主题引用
把Activity的android:theme属性值改成标准的样式资源引用格式@style/Themeabc,替换原来的@manifest/Themeabc:<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:theme="@style/Themeabc" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask"> <!-- 其他内容保持不变 --> </activity>确认Delphi打包资源
确保Delphi项目会把res目录下的资源打包进APK:检查Project Options → Android → Resources,确认res目录被包含在资源搜索路径中。
为什么原来的写法不行?
Android的资源系统是独立于Manifest的,所有可引用的资源(样式、字符串、布局等)都必须放在res/目录对应的子文件夹里,Manifest只能通过@资源类型/资源名的格式引用这些预定义的资源,不能像HTML那样在当前文件内嵌定义样式。
内容的提问来源于stack exchange,提问作者Michał Hetnar
相关产品推荐
相关产品推荐

