如何在textview中获取文本语言?

时间:2015-09-26 13:33:11

标签: android sms detection persian

我在我的安卓消息应用程序中有一个textview我得到了我的Android手机的消息,我在textviews中显示它们我想将layout_gravity设置为右边如果文本是波斯语的,那么如何检测我从下面得到的文本语言URI?

Uri uri = Uri.parse("content://sms/");

1 个答案:

答案 0 :(得分:3)

Bidi课程。如果您的文字为0,则此类有getBaseLevel()方法返回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对象以查看文本是否正确   表示从左到右或从右到左。这样的对象是   非常轻量级,这个文本相对容易处理。

     

如果有多个文本运行,则可以使用有关运行的信息   通过索引访问以获取运行的开始,限制和级别。该   level表示a的方向和“嵌套级别”   定向运行。奇怪的水平是从右到左,而平均水平是   左到右。所以例如0级表示从左到右的文本,   级别1表示从右到左的文本,级别2表示   从右到左的运行中嵌入了从左到右的文本。