Как мне разместить курсор справа в EditText - PullRequest
17 голосов
/ 19 октября 2011

Мое приложение использует язык RTL (справа налево).

Когда поле EditText получает фокус, курсор появляется слева и только тогда, когда пользователь начинает печатать,курсор (и текст RTL) перемещается вправо.Когда пользователь нажимает «ввод», чтобы начать новую строку, курсор снова перемещается влево.

Когда я использую android:gravity="right", курсор в порядке (справа), но когда пользователь начинает печататьтекст всегда перемещается на другую сторону (текст RTL перемещается влево).

Есть идеи, как я могу выровнять текст вправо И сохранить направление текста?

Ответы [ 5 ]

19 голосов
/ 05 декабря 2012

Это работает для меня

      <EditText
            android:id="@+id/editText1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:ellipsize="end"
            android:gravity="right" />

ellipsize важно

Это решит вашу проблему

2 голосов
/ 05 декабря 2012

Возможно, вы захотите взглянуть на встроенную поддержку RTL, которая была представлена ​​в Android 4.2 Jelly Bean.

http://developer.android.com/about/versions/jelly-bean.html

Android 4.2 представляет полную встроенную поддержку RTL (право наслева) макеты, включая макетирование зеркал.Благодаря встроенной поддержке RTL вы можете предоставить всем пользователям одинаковые возможности работы с приложениями, независимо от того, использует ли их язык сценарий, читающий справа налево, или сценарий, читающий слева направо.

1 голос
/ 27 апреля 2017

У меня та же проблема, и я могу это исправить, установив android:textDirection в моем EditText.Например,

android:textDirection="inherit"

Вы можете изменить значение textDirection согласно вашему требованию.Я принял это как наследовать , потому что пользователь может изменить язык в приложении.Поэтому, если пользователь выбрал язык, такой как английский или хинди, он начнет печатать с влево-вправо , но если пользователь выбрал язык, такой как урду, он начнет печатать справа налевонаправление .

Для этого ваше приложение минимальный уровень API должен быть 17 .

0 голосов
/ 27 сентября 2016

Начиная с уровня API> = 17

Мы можем использовать android: layoutDirection в редактируемом тексте. Также android:gravity="end" должен также работать.

0 голосов
/ 05 декабря 2012

ИМХО, android:gravity = right только выравнивает текст вправо.Но то, что вы хотите, не может быть сделано с этим.Вы можете вызвать событие ontouch в textbox, добавить новый символ справа от текущего текста и снова отобразить его .....

...