当前位置: 首页 > news >正文

东莞网站制作公司报价网络规划设计师讲义百度网盘下载

东莞网站制作公司报价,网络规划设计师讲义百度网盘下载,聚合页面网站什么时候做,企业网站产品分类多怎么做seo如果是单独给app加上国际化,其实很容易,创建对应的国家资源文件夹即可,如values-en,values-pt,app会根据当前系统语言去使用对应语言资源文件,如果找不到,则使用values文件夹里的资源 但本文讲得是另外一种情况,就是app内置一个切换多语言的页面,可以给用户切换 步骤 1.添加服务…

如果是单独给app加上国际化,其实很容易,创建对应的国家资源文件夹即可,如values-en,values-pt,app会根据当前系统语言去使用对应语言资源文件,如果找不到,则使用values文件夹里的资源

但本文讲得是另外一种情况,就是app内置一个切换多语言的页面,可以给用户切换

步骤

1.添加服务声明

此步骤主要是让我们的app可记录当前应用语言,使用的Service是android系统给我们提供的

<!--    国际化多语言    -->
<serviceandroid:name="androidx.appcompat.app.AppLocalesMetadataHolderService"android:enabled="false"android:exported="false"><meta-dataandroid:name="autoStoreLocales"android:value="true" />
</service>

2.在xml文件夹增加文件locale_config.xml

声明支持的几个语言

<locale-config xmlns:android="http://schemas.android.com/apk/res/android"><locale android:name="en" /><locale android:name="pt" /><locale android:name="es" /><locale android:name="de" /><locale android:name="fr" />
</locale-config>

3.调用方法切换多语言

// 切换语言
val langua="en"
AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(langua))

补充下其他方法:

//获取当前应用使用语言
val locale = AppCompatDelegate.getApplicationLocales()[0]//语言短标转为locale对象
val langua="en"
val locale = Locale.forLanguageTag(langua)

一些坑点

1.上架谷歌市场无法切换语言

上架到谷歌市场,用户下载只会下载其系统语言包,会导致app内置的语言切换功能无效

原因是打包为aab的时候,gradle的配置,默认是开启了语言分包设置,我们取消这个设置就可以解决此问题

gradle配置如下

buildTypes {release {bundle{//设置多语言不分包处理language {// Specifies that the app bundle should not support// configuration APKs for language resources. These// resources are instead packaged with each base and// feature APK.enableSplit = false}density {// This property is set to true by default.enableSplit = true}abi {// This property is set to true by default.enableSplit = true}}}
}

2.使用StringUtil导致语言切换功能失效

我使用到了Blankj/AndroidUtilCode里面的StringUtil获取数据,到时切换多语言后会存在问题

原因是里面StringUtil里面使用的是application而不是Activity

最终还是更换为使用Activity对象来获取string文本(activity.getString(R.string.hello))

也看到了issue有人说到这个问题,说要是更新application的资源文件,但我测试的时候发现更新application的语言资源后,会触发应用闪屏的效果,然后就没有使用此方法

由于项目进度赶,就没去细究了

3.使用静态数据导致后续没有文本没有更新

因为页面有几个使用相同布局的样式,比如说常见的菜单项,我是这样的做法:

抽取出来的一个静态类来存储对应数据(图标,文本之类),之后写一个xml文件,页面则是使用include来引用多份相同样式的item,最终在Activity里给这些item赋值

由于item比较少,又不想用recyclerview,就是采用了上面的这个方法

但是如果涉及到多语言切换的话,就会导致没有数据及时更新

原因是更换语言后,是Activity进行的重新创建,但我们存储数据的类还是存在的,里面文本数据并没有更新,所以就是导致了这个问题

解决方法简单粗暴,就每次Activity的onCreate方法里创建对应的数据对象即可,这样,Activity重建之后我们的文本数据就会重新调用activity.getString(R.string.hello)获取了

文章转载自: Stars-one

原文链接:https://www.cnblogs.com/stars-one/p/17862389.html

http://www.yayakq.cn/news/427583/

相关文章:

  • 服饰视频网站建设怎么优化网站排名才能起来
  • 网站推广自己可以做吗国外网站建设视频教学
  • 网站一屏的尺寸公司网站建设的定位语要怎么取
  • 企业网站为什么要备案博达软件网站建设
  • 唐山乾正建设工程材料检测公司网站青岛网站开发中心
  • 不用代码做网站html厦门外贸推广
  • 导航网站 win8风格常州电子商务网站建设
  • wordpress网站欣赏厦门国外网站建设公司排名
  • 诸城做网站收费网站开发培训成都
  • 网站建设的实施方式上海有名的猎头公司
  • wordpress设计类网站中山网站seo关键词
  • 手机商城建站系统网站建设芗城网站建设公司
  • 做彩票网站抓到判几年电子商务网站建设实践
  • 九江做网站哪家好制作网站需要哪些工作
  • 服务器做php网站网站建设属于什么领域
  • 制作企业网站怎么报价网站建设招标书模板
  • 做推广效果哪个网站好做招商加盟网站
  • 昆山网站建设方案优化公司国际平台有哪些
  • 通化网站开发软件开发步骤包括哪些过程
  • 商务网站管理的主要内容数据管理高端品牌型 营销型网站建设
  • 网站建设报价浩森宇特西安谁家做网站
  • 常州网站建设公司价位wordpress与app交互
  • 长春 房地产网站建设网页设计公司员工
  • 集团网站建设成都wordpress怎么置顶
  • 建立企业网站方案做软件常用的网站有哪些软件
  • 电影模板哪个网站好建设网站案例
  • 早教网站模板烟台市最好的专业做网站的公司
  • 江苏嘉瑞通建设有限公司网站wordpress 多说
  • 如何做公司介绍视频网站wordpress 安卓接口
  • 网站域名注册基本流程产品全网营销推广