Как получить направление текста в Android и динамически изменить макет в соответствии с направлением?

Я провожу исследование возможности динамического изменения пользовательского интерфейса в зависимости от направления текста. Хотя Google поддерживает языки RTL (ссылка:Встроенная поддержка RTL в Android 4.2), но это не относится к ситуации, когда приложение имеет смесь содержимого LTR и RTL.

Решение Google является правильным, если у нас многоязычное приложение, и оно имеет разные источники статических данных (например, пункты меню) на разных языках. Однако я не нашел другого документа о том, как динамически изменять макет в зависимости от направления текстового содержимого.

На следующем рисунке показан текущий дизайн моего тестового приложения. Список приходит с Facebook (список моих друзей) и содержит английские и персидские имена.

Мое решение состоит в том, чтобы иметь два макета (один для LTR и один для RTL) в адаптере и назначать каждый в зависимости от направления имени. Итак, я написал следующие строки кода:

@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;
    }

и результат:

Я отразил строки на основе того, является ли строка четной или нечетной. Теперь мой вопрос заключается в том, как отразить пользовательский интерфейс на основе имени. Я думаю, что я должен изменить условие условия сif(position % 2 == 0) что-то вродеif(isNameLTR(FIRST_CHAR_OF_NAME)), Я понятия не имею, как реализовать этот метод.

Как я могу узнать, что персонаж LTR или RTL? (Я думаю, что Android знает, что первым символом слова является RTL или LTR, поэтому, когда ширина представления текста совпадает с родительским, он выравнивает текст по правому краю, если символ RLT, и по левому краю, если символ LTR).

Любые предложения или комментарии будут оценены. Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос