[prg] Re: Как сэмулировать в android ввод символов с клавиатуры в editText,котор
Приветствую всех.
> как в editText,в который можно вводить
> только цифры,сделать так,чтобы к примеру при нажатии звёздочки (keyCode
> =17) вводилась точка,а при нажатии решётки (keyCode=18) вводились скобки
Уберите атрибут inputType, из файла xml-разметки для EditText. Или не
устанавливайте это свойство программно.
Ваш EditText будет получать весь ввод без исключения. А фильтрацию
осуществляйте сами либо реагируя на изменение текста
(TextView.addTextChangedListener), либо в OnKeyListener и манипулируя
методами класса Editable.
Чтобы не смущать зрячих пользователей экранной клавиатурой с полным рядом
цифр и букв, запретите её отображение.
> и чтобы при этом talkback это озвучивал и обрабатывал так,как будто я на
> клавиатуре ввожу эти символы?
Вы неправильно формулируйте задачу. Не на клавиатуре, а в поле
редактирования. TalkBack не озвучивает клавиатурный ввод (по крайней мере,
по умолчанию), он озвучивает процесс редактирования в поле редактирования, а
это совершенно разные события, хотя и связанные причинно-следственной
зависимостью.
К процессу редактирования относятся события добавления символа в поле
редактирования, удаление символа в поле редактирования, выделение символа и
снятие выделения. Как вы это делаете -- при помощи аппаратной или
виртуальной(экранной ) клавиатуры или каким-то другим способом -- для
EditText не имеет значения (и для TalkBack тоже).
Если вы нажали клавишу, а TalkBack молчит, то значит никаких действий в поле
редактирования не произошло.
> нужно сэмулировать ввод знаков плюс,минус,умножить,разделить,точки и
> скобок для моего калькулятора,как будто я ввожу этот текст с клавиатуры.
Опять путаница в терминологии: не "эмулировать", а напрямую добавить нужный
символ (или заменить ненужный на нужный).
Если вы будете эмулировать клавиатурный ввод, то есть программно
генерировать KeyEvent, то это событие пойдёт через ту же службу ввода,
(обычные пользователи называют её клавиатурой или экранной
клавиатурой)которая в соответствии с указанным у вас inputType, отфильтрует
всё, кроме цифр.
> подскажите
> пожалуйста,где взять исходники класса editText,чтобы понять,как это всё
> работает,
Если вы штатным образом устанавливали Android SDK, то вы можете отметить (в
GUI) или указать в командной строке (для CLI), что вам нужны исходники для
соответствующей версии Android и они будут загружены (по умолчанию, так и
происходит).
Если нет, то в интернете исходники доступны и в официальном хранилище, и на
множестве зеркал:
https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/widget/EditText.java