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

.NET MAUI Android应用强制设置英文UI的方法咨询

解决.NET MAUI Android UI因语言切换布局颠倒的问题

你的问题根源是部分语言(如阿拉伯语、希伯来语)属于RTL(从右到左)语言,系统会自动翻转布局方向。仅设置CultureInfo往往不够,得从全局区域设置、布局方向锁定两个层面入手,以下是具体实现步骤:

1. 全局强制锁定英文区域

在应用启动时就覆盖系统语言设置,确保所有线程都使用英文区域:

在MauiProgram.cs中添加初始化代码

直接在CreateMauiApp方法最开头加入这段代码:

using System.Globalization;
using Microsoft.Maui.Controls;

namespace YourAppNamespace;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        // 强制全局使用英文(美国)区域
        var enUsCulture = new CultureInfo("en-US");
        CultureInfo.DefaultThreadCurrentCulture = enUsCulture;
        CultureInfo.DefaultThreadCurrentUICulture = enUsCulture;

        // 强制布局方向为从左到右,彻底禁用RTL翻转
        Application.Current.FlowDirection = FlowDirection.LeftToRight;

        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

        return builder.Build();
    }
}

Android项目额外加固

如果上面的设置仍有遗漏,在Android的MainActivity中进一步锁定系统语言:
打开Platforms/Android/MainActivity.cs,在OnCreate方法里补充:

using Android.Content.Res;
using System.Globalization;

namespace YourAppNamespace.Droid;

[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
    protected override void OnCreate(Bundle? savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // 强制Android系统区域为英文
        var enLocale = new Java.Util.Locale("en", "US");
        Java.Util.Locale.Default = enLocale;
        var config = new Configuration();
        config.Locale = enLocale;
        BaseContext.Resources.UpdateConfiguration(config, BaseContext.Resources.DisplayMetrics);

        // 锁定页面布局方向为从左到右
        Window.DecorView.LayoutDirection = Android.Views.LayoutDirection.Ltr;
    }
}

2. 锁定页面布局方向

为了确保所有页面都不受系统设置影响,直接在全局样式里统一配置:
打开App.xaml,添加全局页面样式:

<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YourAppNamespace.App">
    <Application.Resources>
        <!-- 所有页面强制使用从左到右布局 -->
        <Style TargetType="Page">
            <Setter Property="FlowDirection" Value="LeftToRight" />
        </Style>
    </Application.Resources>
</Application>

这样就不用逐个页面设置FlowDirection了。

3. 排查常见坑

  • 之前只设置CurrentUICulture没用?因为必须同时设置DefaultThreadCurrentCulture和DefaultThreadCurrentUICulture,覆盖所有线程的区域设置。
  • 旧缓存导致设置不生效?试试清理项目、删除bin/obj文件夹后重新编译。
  • 第三方控件不听话?部分第三方控件会单独读取系统语言,需要查控件文档单独配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:58:20