Android 多语言切换,适配8.0


\color{#000042}{Android多语言切换其实就是创建不同语言的带后缀的values文件夹,将}
\color{#000042}{App中需要中英文切换的文字写在不同values文件夹下的strings.xml中,}
\color{#000042}{以中英文切换为例:}


  • \color{#000042}{ 右键res文件夹,选择New Resource Directory,选择Locale,点击 >>}
    \color{#000042}{,在language一栏里选择自己想要的语言,比如en:English,OK:}
image.png
  • \color{#000042}{确定之后会在res下生成一个带后缀的values文件夹,例如:values-en,}
    \color{#000042}{项目中看不到,切换到Project或者在本地查看,在生成的文件夹里建一个}
    \color{#000042}{strings.xml文件,完成之后如下图目录格式:}
res目录下文件
  • \color{#000042}{将项目控件中需要显示的字体,在values下和values-en下的strings文件}
    \color{#000042}{里分别填写,当然,name肯定是要相同的,如下两端代码:}

\color{#FF0000}{values目录下的strings.xml文件的部分内容:}

    <string name="search_pathogens">病原体搜索</string>
    <string name="pathogens">病原体</string>
    <string name="virus">病毒</string>
    <string name="bacteria">细菌</string>
    <string name="fungus">真菌</string>
    <string name="others">其他</string>
    <string name="collection">收藏</string>

\color{#FF0000}{values-en目录下的strings.xml文件的部分内容:}

    <string name="search_pathogens">Search for pathogens</string>
    <string name="pathogens">Pathogens</string>
    <string name="virus">Virus</string>
    <string name="bacteria">Bacteria</string>
    <string name="fungus">Fungus</string>
    <string name="others">Others</string>
    <string name="collection">Collection</string>
  • \color{#000042}{中英文切换操作,更改一下配置对象}
 // 获得res资源对象
Resources resources = activity.getResources();
// 获得屏幕参数:主要是分辨率,像素等。
DisplayMetrics metrics = resources.getDisplayMetrics();
// 获得配置对象
Configuration config = resources.getConfiguration();
//区别17版本(其实在17以上版本通过 config.locale设置也是有效的,不知道为什么还要区别)
//在这里设置需要转换成的语言,也就是选择用哪个values目录下的strings.xml文件
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
      config.setLocale(Locale.SIMPLIFIED_CHINESE);//设置简体中文
      //config.setLocale(Locale.ENGLISH);//设置英文
  } else {
      config.locale = Locale.SIMPLIFIED_CHINESE;//设置简体中文
      //config.locale = Locale.ENGLISH;//设置英文
  }
resources.updateConfiguration(config, metrics);

\color{#000042}{ 注意:在获取Resources对象时,所传的Context在Android8.0以下可以是}
\color{#000042}{Activity或者是Application;但是在8.0以上,只能是Activity,否则切换无效}


  • \color{#000042}{修改完配置之后需要重新调用textView.setText(),不然配置改了显示内容}
    \color{#000042}{ 没改,如下:}
//调完这个之后,文字就会变成你设置的其他语言了                    
tvFungus.setText(getResources().getString(R.string.fungus));

\color{#000042}{注:app关闭之后是会自动切换到手机系统语言的,所以在app退出之前如果设}
\color{#000042}{置成了英文,app重新打开还是会显示中文,所以想要在重新打开app时依旧显}
\color{#000042}{示英文,就需要在每次修改完语言状态之后通过sharedPreference进行状态保}
\color{#000042}{存,然后在app首页进行语言设置(不要在application里设置,因为还要适配8.0)}


\color{#000042}{········何为生活,不想喝的酒,先干为敬;不想见的人,笑脸相迎········}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容