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

问题描述 投票:3回答:1

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

Uri uri = Uri.parse("content://sms/");
android sms detection persian
1个回答
3
投票

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表示从右到左的运行中嵌入的从左到右的文本。

© www.soinside.com 2019 - 2024. All rights reserved.