我在我的安卓消息应用程序中有一个textview我得到了我的安卓手机的消息,我在textviews中显示它们我想将layout_gravity设置为右边,如果文本是波斯语的,那么如何检测我从uri下面得到的文本语言?
Uri uri = Uri.parse("content://sms/");
有Bidi类。这个类有getBaseLevel()方法,如果你的文本是0
,则返回left-to-right
,否则1
(如果right-to-left
)。
例:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Bidi bidi = new Bidi(userList.get(position).getName(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
if(bidi.getBaseLevel() == 0)
convertView = myInflater.inflate(R.layout.list_add_friends_row, null);
else
convertView = myInflater.inflate(R.layout.list_add_friends_row_mirror, null);
还有另一种方法,baseIsLeftToRight()
可能更适合在if语句中使用。结果与上述相同。
Bidi bidi = new Bidi(userList.get(position).getName(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
if(bidi.baseIsLeftToRight())
convertView = myInflater.inflate(R.layout.list_add_friends_row, null);
else
convertView = myInflater.inflate(R.layout.list_add_friends_row_mirror, null);
SRC:https://stackoverflow.com/a/18008575/797495
public final class Bidi
extends Object
此类实现Unicode双向算法。
Bidi对象提供有关用于创建它的文本的双向重新排序的信息。例如,这是正确显示阿拉伯语或希伯来语文本所必需的。这些语言本质上是混合方向的,因为它们从左到右排序数字,同时从右到左排序大多数其他文本。
创建后,可以查询Bidi对象以查看它所代表的文本是从左到右还是从右到左。这些对象非常轻量级,并且该文本相对容易处理。
如果有多个文本运行,则可以通过索引来访问有关运行的信息,以获取运行的开始,限制和级别。该级别表示方向运行的方向和“嵌套级别”。奇数级别是从右到左,而偶数级别是从左到右。因此,例如,级别0表示从左到右的文本,而级别1表示从右到左的文本,级别2表示从右到左的运行中嵌入的从左到右的文本。