Como obter direção de texto no Android e alterar o layout dinamicamente de acordo com a direção?

Eu estou fazendo algumas pesquisas sobre a viabilidade de alterar a interface do usuário dinamicamente com base na direção de um texto. Embora o Google esteja suportando idiomas RTL (ref:Suporte nativo a RTL no Android 4.2) mas não abrange uma situação em que a aplicação possui uma mistura de conteúdos LTR e RTL.

A solução do Google está correta se tivermos aplicativos multilíngües e tiver diferentes fontes de dados estáticos (como itens de menu) em diferentes idiomas. No entanto, não encontrei nenhum outro documento sobre como alterar o layout dinamicamente com base na direção do conteúdo de texto.

A imagem a seguir mostra o design atual do meu aplicativo de teste. A lista vem do Facebook (lista dos meus amigos) e contém nomes em inglês e persa.

Minha solução é ter dois layouts (um para LTR e um para RTL) no adaptador e atribuir cada um deles com base na direção do nome. Então, escrevi as seguintes linhas de código:

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;

            if(position % 2 == 0)
                convertView = myInflater.inflate(R.layout.list_add_friends_row, null);
            else
                convertView = myInflater.inflate(R.layout.list_add_friends_row_mirror, null);

            holder = new ViewHolder();

            holder.llSection = (LinearLayout) convertView.findViewById(R.id.section);
            holder.tvUserName = (TextView) convertView.findViewById(R.id.tvUserName);
            holder.ivPicture = (ImageView) convertView.findViewById(R.id.ivPicture);
            holder.btnAdd = (Button) convertView.findViewById(R.id.btnAdd);

            convertView.setTag(holder);



        holder.btnAdd.setTag(position);
        holder.tvUserName.setText(userList.get(position).getName());
        imageDownloader.displayImage(holder.ivPicture, userList.get(position).getPhotoUrl());

        ...

        return convertView;
    }

e o resultado é:

Espelhei linhas com base em if row is even ou odd. Agora, minha pergunta é como espelhar a interface do usuário com base no nome. Eu acho que deveria mudar a condição da cláusula deif(position % 2 == 0) para algo comoif(isNameLTR(FIRST_CHAR_OF_NAME)). Não tenho ideia de como implementar esse método.

Como posso saber se um personagem é LTR ou RTL? (Eu acho que o Android sabe que o primeiro caractere da palavra é RTL ou LTR é por isso que quando a largura da visualização de texto é coincidente, alinhe o texto à direita se o caractere for RLT e à esquerda se o caractere for LTR).

Qualquer sugestão ou comentários seriam apreciados. obrigado

questionAnswers(3)

yourAnswerToTheQuestion