Xamarin.Android编译报错:找不到Theme.Material.NoTitleBar.FullScreen资源
嘿,我来帮你搞定这个头疼的问题!你遇到的No resource found错误,大概率是主题名称的细节搞错了,或者Xamarin Android的主题适配逻辑有小坑,下面给你几个靠谱的解决方案:
1. 先排查主题名称的大小写问题
你在Manifest里写的Theme.Material.NoTitleBar.FullScreen其实有个小错误——Android系统主题里的全屏后缀是Fullscreen(小写的s),不是FullScreen!把它改成@android:style/Theme.Material.NoTitleBar.Fullscreen,再编译试试,很多时候这个大小写问题就是元凶。
另外别忘了确认项目的目标API版本:右键项目→选项→Android应用程序,把「目标框架」设为API 23或更高(和你的minSdkVersion一致),确保系统主题能被正确识别。
2. 改用AppCompat主题(更推荐,兼容性更好)
如果你的项目用了AppCompat库(大部分Xamarin Android项目都会依赖它),用AppCompat的主题会更稳妥,还能兼容更多设备。
方法一:Manifest+代码结合
先在Manifest里设置无ActionBar的AppCompat主题:
<application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> </application>
然后在Activity的OnCreate方法里添加全屏设置:
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // 开启全屏模式 Window.AddFlags(WindowManagerFlags.Fullscreen); // 确保ActionBar隐藏(如果有的话) SupportActionBar?.Hide(); SetContentView(Resource.Layout.Main); }
方法二:自定义全屏AppCompat主题
在Resources/values/styles.xml里创建一个自定义主题:
<style name="FullScreenAppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowFullscreen">true</item> <item name="android:windowNoTitle">true</item> </style>
然后在Manifest里引用这个自定义主题:
<application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:theme="@style/FullScreenAppTheme"> </application>
3. 完全用代码设置(避开Manifest主题坑)
要是不想在Manifest里折腾主题配置,直接在Activity的OnCreate里一步到位:
protected override void OnCreate(Bundle savedInstanceState) { // 先隐藏标题栏(原生Activity用这个) RequestWindowFeature(WindowFeatures.NoTitle); // 设置全屏 Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen); base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.Main); }
如果你用的是AppCompatActivity,把RequestWindowFeature换成SupportRequestWindowFeature(WindowFeatures.NoTitle),再加上SupportActionBar?.Hide()就可以了。
内容的提问来源于stack exchange,提问作者Deyan koba




