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 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用