nana4ever 2012-11-20 09:37 采纳率: 95.8%
浏览 2809
已采纳

Android中Localization定位的问题

使用以下代码是用于把应用语言环境转换成汉语,程序在一些设备上能正常的运行,但是在另外一些设备上,它把程序中的视图都放大了。这是为什么呢?谁能给点建议啊?

Configuration config = getResources().getConfiguration();
            Locale locale = new Locale("es", "es_ES"); // change this to a different Locale than your device
            config.locale = locale;
            Locale.setDefault(locale);
            getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics());
            Log.i("onSelected..", Locale.getDefault().getCountry());
                  startActivity(new Intent(getApplicationContext(), HomePage.class));
            finish();   
  • 写回答

3条回答

  • Curie-87 2012-11-21 01:56
    关注

    当我使用不同的语言时,我使用以下方法
    1)给所有支持的语言设置int型

    private Language myLanguage;
    public enum Language 
    {
        Null,Spanish,English,Chinese
    }
    

    2)使用基本功能设置Default Locale

    public static void setDefaultLocale(Context context,String locale) 
    {
        Locale appLoc = new Locale(locale);
        Locale.setDefault(appLoc);
    
        Configuration appConfig = new Configuration();
        appConfig.locale = appLoc;
    
        context.getResources().updateConfiguration(appConfig, context.getResources()
                .getDisplayMetrics());
    }
    

    3)使用一个函数来发布不同的语言

     private void launchApplication(int language)
    {
        // 设置语言
        switch (language)
        {
            case 1:
                // Español
                setDefaultLocale(getApplicationContext(),"es");
                myLanguage = Language.Spanish;
                break;
            case 2:
                // English
                setDefaultLocale(getApplicationContext(),"en");
                myLanguage = Language.English;
                break;
            default:
                // Chinese
                setDefaultLocale(getApplicationContext(),"ca");
                myLanguage = Language.Chinese;
                break;
        }
    
        Intent intent = new Intent(this, MyActivity.class);
        startActivityForResult(intent, 2);
        // 当从别的Activity返回时,结束当前的Activity
        finish();
    
    }
    

    然后调用launchApplication。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器