双向文字就是一个字符串中包含了两种文字,既包含从左到右的文字又包含从右到左的文字。
大多数文字都是从左到右的书写习惯,比如拉丁文字(英文字母)和汉字,少数文字是从右到左的书写方式比如阿拉伯文(ar)跟希伯来文(he)。对于需要国际化支持的应用来说,由于阅读习惯的不同在页面排版和布局中会给开发人员带来麻烦。这种情况多数出现在从右到左的文字中,比如字符串中出现阿拉伯文、英文字母、数字以及标点符号。
遇到的问题:android 某个页面显示title为: username + "唱的歌" ,当用户名为阿拉伯文时,textview显示的字符串就会变成“唱的歌username”。很神奇,是因为阿拉伯文是从右往左的,所以才会有显示的问题。
解决方法:http://developer.android.com/reference/android/support/v4/text/BidiFormatter.html
StringBuilder builder = new StringBuilder();
return builder
.append(BidiFormatter.getInstance().unicodeWrap(mTitleName))
.append("唱的歌").toString();
这样就OK了。