Setting语言与输入法列表客制化
Setting语言与输入法列表客制化
一种仅仅是把语言名称显示出来如中文;还有一种是语言名称后带有国家备注,如中文(繁体)、中文(简体)。当Projectconfig.mk中有至少2个相同的语言代码打开时,如en_CA,en_US,zh_CN,zh_TW,这时语言列表中就会有English(Canada)、English(united States)、中文(繁体)、中文(简体);如果仅仅打开en_US和zh_CN,就会显示English、中文。
Setting中显示语言名称的地方主要有3处,如果需要克制化,可按照如下方法:
(1) 设置》语言和输入法》语言
5.7tp-7.png (91.72 KB, 下载次数: 0 )
下载附件 保存到相册
2016-5-7 10:11 上传
在文件packages\apps\Settings\res\values\arrays.xml定制要显示的语言、国家代码以及修改后
的名称,如中文定制如下,
<string-array translatable="false" name="special_locale_codes">
<item>zh_CN</item>
<item>zh_TW</item>
</string-array>
<string-array translatable="false" name="special_locale_names">
<item>中文 (简体)</item>
<item>中文 (繁體)</item>
</string-array>
如果要定制其他语言可以在上面添加即可。
主要函数是在LocalePicker.JAVA(frameworks\base\core\java\com\android\internal\app)
public static ArrayAdapter<LocaleInfo> constructAdapter(Context context,final int layoutId, final int
fieldId)
(2) 设置》语言和输入法.
5.7tp-8.png (92.92 KB, 下载次数: 0 )
下载附件 保存到相册
2016-5-7 10:11 上传
这部分没有定制,直接获取ICU字串资源,代码如下
InputMethodAndLanguageSettings.java
alps\packages\apps\Settings\src\com\android\settings\inputmethod
public void onResume() {
if (hasOnlyOneLanguageInstance(language,
Resources.getSystem().getAssets().getLocales())) {
localeString = conf.locale.getDisplayLanguage(conf.locale);
} else {
// localeString = conf.locale.getDisplayName(conf.locale);
localeString= getDisplayName(conf.locale);//自己封装函数
}
……
如果要定制话,可以自己封装函数如下.
private static String getDisplayName(Locale l) {
final String[] specialLocaleCodes =
resources.getStringArray(R.array.special_locale_codes);
final String[]
specialLocaleNames=resources.getStringArray(R.array.special_locale_names);
String code = l.toString();
for (int i = 0; i < specialLocaleCodes.length; i++) {
if (specialLocaleCodes.equals(code)) {
return specialLocaleNames;
}
}
return l.getDisplayName(l);
}
(3) 设置》语言和输入法》anroid键盘设置》输入语言
5.7tp-9.png (89.85 KB, 下载次数: 0 )
下载附件 保存到相册
2016-5-7 10:11 上传
这一块和(2)一样也是直接从底层获取,如果要定制,可以修改如下部分
InputMethodSubtype.java
alps\frameworks\base\core\java\android\view\inputmethod
public CharSequence getDisplayName(
Context context, String packageName, ApplicationInfo appInfo) {
final Locale locale = constructLocaleFromString(mSubtypeLocale);
//final String localeStr = locale != null ? locale.getDisplayName() :
mSubtypeLocale;
final String localeStr = locale != null ? getDisplayName(locale) :
mSubtypeLocale;
……
自己封装函数如下.
private static String getDisplayName(Locale l) {
final String[] specialLocaleCodes =
resources.getStringArray(R.array.special_locale_codes);
final String[]
specialLocaleNames=resources.getStringArray(R.array.special_locale_names);
String code = l.toString();
for (int i = 0; i < specialLocaleCodes.length; i++) {
if (specialLocaleCodes.equals(code)) {
return specialLocaleNames;
}
}
return l.getDisplayName();
}
对于KK版本输入法语言列表中一些字串是在String.xml中定义的,如下为英语的字串
packages\inputmethods\LatinIME\java\res\values
<string name="subtype_en_GB">English (UK)</string>
<string name="subtype_en_US">English (US)</string>
<string name="subtype_es_US">Spanish (US)</string
Setting语言与输入法列表客制化相关推荐
- 教程:客制化您的输入法
Tytoriol: Sulma skåld kastem denn Input Methodhet Ricardo & Sejvas Designworks Aktieselskåb #Tek ...
- Magento教程 7:客制化网站
帮助你的Magento更上一层楼! 架站完成后,我们将分享一些Magento好用的功能.扩充套件.小技巧以及常见的问题. 开启多语言介面 在Magento中,你可以轻松的进行语言切换,只要使用Mage ...
- Android项目客制化
关键编译目录 Makefile build/core/Makefile build/core/main.mk build/core/config.mk build/core/envsetup.mk b ...
- SystemUi状态栏客制化功能和常见问题分析
一.多图标成点 当系统图标区域或者通知图标区域图标过多,而区域不够时,就会将多余的图标隐藏,并显示一个点,如下图所示. 介绍此功能之前先看一下图标的初始化过程,从中可以看到有个config_statu ...
- MTK客制化修改8.1系统
客制化修改 基于6580平台的修改: 1 修改开机动画: 首先添加开机动画包加入以下路径 alps\device\mediateksample\tb8321p2_bsp\device.mk 然后在 ...
- camera_click,camera_focus无法客制化研究——添加copy脚本客制化(四)
研究透了客制化时加PRODUCT_COPY_FILES为啥make会报错,停止编译,因为4.2是可以客制化增加任意copy编译的 在客户目录下增加vendor\artifacts\out\target ...
- 由I9100字体客制化apk架构说起
众所周知,I9100可以在设置--显示设置--字体风格里面改变系统字体. android的系统字体位置在system/fonts文件夹下.而I9100无需root权限.只需安装字体apk包就可以实现更 ...
- 客制化NVRAM的以太网地址
在使用SN Write写Ethernet MAC过程中出现了以下的错误: ERROR!! Ethernet Mac:MetaResult = SPMETA_DLL::META_LID_INVALID. ...
- 客制化键盘键位修改_干电池 支持5设备无线连接 - 高斯ALT71机械键盘拆解评测...
近一段时间,本人就感觉小型紧凑机械键盘键盘很火,这点我很意外,一直以来都是87键和104键的天下,怎么突然就很火热呢?我真的是LOW.小型紧凑型机械键盘种类很多,有60.61.64.66.67.68. ...
- 客制化键盘编程_指尖运动会,谁是打字冠军,双十一机械键盘推荐
机械键盘就只能玩游戏吗?当然不是,其实机械键盘出现还远远早于薄膜键盘,早期类似IBM.AST.HP.康柏一类的品牌机都是标配机械键盘的.早期的机械键盘确实有点笨重,尤其是白轴的机械键盘,让你毕生难忘. ...
最新文章
- Activity启动模式详解
- Android开发之模板模式初探
- python unix时间戳转换成时间_关于python:将unix时间戳字符串转换为可读日期
- 大数运算(6)——大数阶乘(求位数)
- Miniprofiler在普通net项目中的使用
- 学习分布式不得不会的BASE理论
- SpringBoot Redis分布式锁
- c++基础学习(08)--(继承、重载、多态、虚函数)
- python产品发布会_【Mac系统 + Python + Django】之开发一个发布会系统【Django模型(三)】...
- 【Flink】Flink key 应该分配到哪个 KeyGroup 以及 KeyGroup 分配在哪个subtask
- web前端开发技术现状与发展_Web前端开发的未来,将会有哪些发展方向?
- 2018级C语言大作业 - 坦克动荡
- 轮播图的3个常见bug,即处理bug思路及其解决办法
- 如何安装mysql 8.0.12_基于Windows安装MySQL 8.0.12图文教程
- MongoDB学习(黑马教程)-5-数据库MongoDB的验证
- 微信授权+JS-SDK
- 掌握到胃-奈氏图与伯德图的绘制
- VSCode python extension loading 终极解决方案
- Defending Against Model Stealing Attacks with Adaptive Misinformation
- 毕业季的你准备好面试了吗?(下)
热门文章
- android远程主机强迫关闭了一个现有的连接,远程主机强迫关闭了一个现有的连接解决方法...
- 基于python语言设计的词云定制器
- 51nod3155 跳房子
- AidLearning0.87F3安装Python3.8
- 迅雷离线下载节点分布
- 简单粗暴讲述自动化仓储系统
- ThreadPoolExecutor中的submit()方法详细讲解
- 因果推断笔记—— 相关理论:Rubin Potential、Pearl、倾向性得分、与机器学习异同(二)
- SOF-SLAM:一种面向动态环境的语义视觉SLAM(2019,JCR Q1,	4.076)
- IOS UI学习 UI 十个小控件 初度学习