Мое решение, чтобы получить пользователя предпочтительным Locale
Locale.getDefault();
ИЛИ
Locale.getDefault().getLanguage();
и установить layout_gravity
на основе результата Locale
.
Locale
примеры:
Locale.getDefault().getLanguage() ---> en
Locale.getDefault().getISO3Language() ---> eng
Locale.getDefault().getCountry() ---> US
Locale.getDefault().getISO3Country() ---> USA
Locale.getDefault().getDisplayCountry() ---> United States
Locale.getDefault().getDisplayName() ---> English (United States)
Locale.getDefault().toString() ---> en_US
Locale.getDefault().getDisplayLanguage()---> English
Locale
Язык представляет собой сочетание языка/страны/вариант. Локали составляют , используемые для изменения представления информации, такой как цифры или даты , в соответствии с соглашениями в регионе, который они описывают.
Коды языков представляют собой двухбуквенные коды языка ISO (такие как как «en»), как определено в ISO 639-1. Коды стран - это двухбуквенные коды стран с заглавной буквой (например, «США»), как определено в стандарте ISO 3166-1. Коды вариантов не определены.
Обратите внимание, что Java использует несколько устаревших двухбуквенных кодов. Иврит («he») код языка переписан как «iw», индонезийский («id») как «in», и идиш («yi») как «ji».
UPDATE:
основе @rahul-tiwari комментарий:
Чтобы получить текущий язык клавиатуры, использование:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
InputMethodSubtype ims = imm.getCurrentInputMethodSubtype();
String locale = ims.getLocale();
я не получил ваш вопрос правильно, спасибо @rahul-tiwari.
UPDATE N.º 2
Существует Bidi класс. Этот класс имеет метод getBaseLevel(), который возвращает 0
, если ваш текст иначе 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()
что может быть лучше использовать, если заявление. Результат был таким же, как и выше.
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 представляет текст слева направо, встроенный в ход справа налево.
не понимаю ваш вопрос –
@BhavdipPathar В чем проблема с этим? Мое приложение - это приложение для sms, и я получаю сообщения из базы данных и показываю, что некоторые из них являются wriiten на английском и некоторые персидские, как я могу обнаружить, что sms на персидском языке или нет? – Suzi
доступны опции для определения языка. [проверьте это] (https://www.google.co.in/search?q=language+detection+online+apis&oq=language+detection+online+apis&aqs=chrome..69i57.7601j0j1&sourceid=chrome&es_sm=93&ie=UTF -8 # д = язык + обнаружение + Google + Apis + андроид). –