Android实战技巧:为从右向左语言定义复杂字串,代码和xml设置
来源:互联网 发布:tv远程控制软件 编辑:程序博客网 时间:2024/06/13 16:57
代码方式,一般是放在一个Utils.java作为公共方法
/// add by xxx.zhou for ArabicRTL support 20141024 begin public static boolean isContainEG_IR(String str) { if (str == null || str == "") return false; String rtl[] = new String[4]; rtl[0] = "[\u0600-\u06ff]"; // Arbic rtl[1] = "[\u0750-\u077f]"; // Arbic Supplement rtl[2] = "[\ufb50-\ufdff]"; // Arabic PresentationForms A rtl[3] = "[\ufe70-\ufeff]"; // Arabic PresentationForms B boolean isContained = false; for (String s : rtl) { Pattern p = Pattern.compile(s); Matcher m = p.matcher(str); if (m.find()) { isContained = true; break; // I've found out contain arabic and returns } } return isContained; } //判断是否是一个号码,常用 public static boolean isPurePhoneNumber(String str) { if (str == null) return false; // allan add char chs[] = str.toCharArray(); boolean flag = true; for (char c : chs) { if (c != '+' && !(c >= '0' && c <= '9') && c != '*' && c != ' ' && c != ',') { flag = false; break; } } return flag; } //设置文字的显示方向,一般此方法前判断一下isPurePhoneNumber() public static String ChangeTextForRTL(String orgin, int type) { // phone is RTL suport if (type == 1) { return '\u202D' + orgin + '\u202C'; } else { return '\u202A' + orgin + '\u202C'; } } public static void SetTextDIRECTION(CharSequence temp, TextView showtextview) { if (showtextview == null) return; String tempstrings = temp.toString(); if (!tempstrings.equals("")) { boolean iscontain = isContainEG_IR(tempstrings); if (iscontain) { boolean isfirst = isFirstCharEnglish(tempstrings); if (isfirst) { showtextview.setTextDirection(android.view.View.TEXT_DIRECTION_LTR); } else { showtextview.setTextDirection(android.view.View.TEXT_DIRECTION_RTL); } } else { showtextview.setTextDirection(android.view.View.TEXT_DIRECTION_LTR); } } else { if (isLanguageEnvRTL()) { showtextview.setTextDirection(android.view.View.TEXT_DIRECTION_RTL); } else { showtextview.setTextDirection(android.view.View.TEXT_DIRECTION_LTR); } } } public static boolean isLanguageEnvRTL() { java.util.Locale l = java.util.Locale.getDefault(); String language = l.getLanguage(); if (language.equals("ar") || language.equals("iw") || language.equals("fa")) { return true; } return false; } public static boolean isFirstCharEnglish(String str) { char chs[] = str.toCharArray(); char c = ' '; for (int i = 0; i < chs.length; i++) { if (chs[i] != ' ') { c = chs[i]; break; } } if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { return true; } return false; } /// add by xxx.zhou for ArabicRTL support 20141024 end //add by xxx.li for PR884764 20150122 START public static boolean isRuLanguage(Context context){ boolean mIsRussian = "ru".equals(context.getResources().getConfiguration().locale.getLanguage()); boolean mIsLastMatch = SystemProperties.getBoolean("ro.def.TelephonyProvider.match", false); return mIsRussian && mIsLastMatch; } public static int getConfigPhnumMinMatch(){ int mMinMatch = Integer.valueOf(SystemProperties.get("ro_config_phnum_significant_len", "7")); return mMinMatch; } //add by xxx.li for PR884764 20150122 END
xml设置
1、strings.xml
<!-- file values-ar/strings.xml --> <string name="send_msg_to">استورد\u202d%s\u202cتور</string> <string name="send_msg_to">\u200fsend <xliff:g id="number">\u200f%1$d</xliff:g>استورد</string>
2、布局文件TextView
1. 在你的应用程序声明文件(manifest)里声明开启RTL mirroring的支持。具体做法是:在manifest.xml声明文件的元素中,添加 android:supportsRtl=”true”
- 修改应用程序中所有的“left/right”布局属性,改为对应的”start/end”布局
1)如果你的应用程序是针对Android 4.2目标平台(应用的targetSdkVersion或者minSdkVersion是17或者更高), 那么你就应当用“start”和“end”替换原来的“left”和“right”。例如,android:paddingLeft应当被替换为android:paddingStart。
2) 如果你想让你的应用程序与Android 4.2之前的版本保持兼容(也就是与targetSdkVersion或者minSdkVersion为16或者更早的版本),那么你应当既加上“start”和“end”,又加上“left”和“right”。例如,你应当同时写上:adnroid:paddingLeft和android:paddingStart。
<!--[BUGFIX]-Mod-BEGIN by (xxx.deng),10/27/2015,1103440, --> <!--Arabic support,add android:textDirection="ltr" --> <EditText android:id="@+id/edit_container" android:layout_width="0dip" android:layout_height="wrap_content" android:textDirection="ltr" /> <!--[BUGFIX]-Mod-END by (xxx),1103440.-->
0 0
- Android实战技巧:为从右向左语言定义复杂字串,代码和xml设置
- Android实战技巧:为从右向左语言定义复杂字串
- Android实战技巧:为从右向左语言定义复杂字串
- Android实战技巧:为从右向左语言定义复杂字串
- Android实战技巧:为从右向左语言定义复杂字串
- Android实战技巧:为从右向左语言定义复杂字串
- Android实战技巧:为从右向左语言定义复杂字串
- Android实战技巧:为从右向左语言定义复杂字串
- 关于Android 为从右向左字串拼接 "\u200f"
- Android支持RTL(从右向左)语言
- 设置APP支持阿拉伯(RTL 从右向左)语言
- 函数参数压栈的顺序为从右向左
- c语言函数参数处理顺序-从右向左
- 图片滚动从右向左滚动网页代码
- 【代码笔记】iOS-字体从右向左滚动
- input和textarea标签实现从右向左输入
- 文字从右向左滚动
- 页面滚动从右向左
- 环形进度条CircleProgress
- org.springframework.util.StringUtils的使用
- 用两个栈实现一个队列
- Find Minimum in Rotated Sorted Array
- MySQL InnoDB 共享表空间和独立表空间
- Android实战技巧:为从右向左语言定义复杂字串,代码和xml设置
- 如何进行iOS性能测试-------Instruments 使用教程
- 微信企业号接入时InvalidKeyException处理
- 行链接消除测试
- 什么是 MIME Type?
- ——黑马程序员——C语言基础--sizeof运算符和strlen 函数的区别总结
- 最短路——SPFA
- eclipse安装git
- JavaScript 闭包的用途