Setting语言与输入法列表客制化
来源:互联网 发布:大数据的作用 编辑:程序博客网 时间:2024/05/01 06:24
Setting语言与输入法列表客制化
Setting的语言字串来自ICU资源,其语言名称显示也有2种形式。
一种仅仅是把语言名称显示出来如中文;还有一种是语言名称后带有国家备注,如中文(繁体)、中文(简体)。当Projectconfig.mk中有至少2个相同的语言代码打开时,如en_CA,en_US,zh_CN,zh_TW,这时语言列表中就会有English(Canada)、English(united States)、中文(繁体)、中文(简体);如果仅仅打开en_US和zh_CN,就会显示English、中文。
Setting中显示语言名称的地方主要有3处,如果需要克制化,可按照如下方法:
(1) 设置》语言和输入法》语言
在文件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) 设置》语言和输入法.
这部分没有定制,直接获取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键盘设置》输入语言
这一块和(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
一种仅仅是把语言名称显示出来如中文;还有一种是语言名称后带有国家备注,如中文(繁体)、中文(简体)。当Projectconfig.mk中有至少2个相同的语言代码打开时,如en_CA,en_US,zh_CN,zh_TW,这时语言列表中就会有English(Canada)、English(united States)、中文(繁体)、中文(简体);如果仅仅打开en_US和zh_CN,就会显示English、中文。
Setting中显示语言名称的地方主要有3处,如果需要克制化,可按照如下方法:
(1) 设置》语言和输入法》语言
在文件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) 设置》语言和输入法.
这部分没有定制,直接获取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键盘设置》输入语言
这一块和(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
0 0
- Setting语言与输入法列表客制化
- android qcom Setting 语言列表
- android的setting语言列表 rk3188
- 如何向android的setting语言列表中添加一门语言
- 如何向android的setting语言列表中添加一门语言
- 如何向android的setting语言列表中添加一门语言
- 获取输入法列表
- TSF输入法列表获取
- 显示系统输入法列表
- Ubuntu14.04.2中文语言支持与输入法设置
- python实现三元语言模型与输入法推荐
- Perl 语言笔记(2) -- 列表与数组
- c语言中信号列表与总结
- 我的Android进阶之旅------>Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项
- 汉语输入法无选择列表
- 输入法语言实现过程
- 输入法语言支持状态
- Setting
- 架构设计:系统间通信(38)——Apache Camel快速入门(下1)
- RxJava入门一
- Android点击屏幕空白处,隐藏键盘
- Qt软件开发具有 管理员权限
- SDUTACM素数判定
- Setting语言与输入法列表客制化
- Android 避免APP启动闪黑屏(Theme和Style)
- JAVA集合(二)-ArrayList
- spring各个jar包的意义
- 初识Retrofit2.0
- 三角蛋糕
- perl读写Excel
- 欢迎使用CSDN-markdown编辑器
- 4.1、Android Stuido配置你的Build Variant