You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Xamarin.Android编译报错:找不到Theme.Material.NoTitleBar.FullScreen资源

解决Xamarin Android全屏无标题栏主题找不到的问题

嘿,我来帮你搞定这个头疼的问题!你遇到的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

火山引擎 最新活动