Проблема с программной клавиатурой

#android #android-softkeyboard #virtual-keyboard

#Android #android-softkeyboard #виртуальная клавиатура

Вопрос:

Я работаю над softkeyboard.

Мои проблемы приведены ниже.

  1. Как получить текущее положение курсора в тексте (EditText).
  2. Как получить общую длину значения в тексте (EditText).
  3. Если EditText многострочный, то получите текущую строку курсора в тексте (EditText).

Если вы хотите увидеть мой код, то посмотрите на эту ссылку на softkeyboard. Я следую этому коду.

Ответ №1:

Вы должны поместить событие textwatcher в edittext это событие выполняется, когда пользователь вводит символ (любой, введенный клавиатурой). В вашем случае, когда пользователь вводит один символ в edittext, вы получаете текст с отверстием, затем получаете длину этого текста, это ваша позиция курсора и общая длина значения в тексте. согласно вашему третьему вопросу, у вас есть весь текст, записанный в edit text с использованием вышеуказанного метода, затем вы преобразуете весь текст в значение ascii, затем сравниваете каждый символ с 13 (это значение ascii для ввода с клавиатуры) и увеличиваете счетчик строки, когда это условие true, используя это, вы не найдете ни одной строки в редактируемом тексте. я привожу пример для вас, как поместить средство просмотра текста в edittext, который вы изменяете в этом коде, и преобразовать его в соответствии с вашими условиями.

 ed.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {

                textlength = ed.getText().length();
                );

            }
        });
  

Комментарии:

1. Спасибо ShowHide, но я думаю, вы не совсем ясно прочитали мой вопрос. На самом деле я работаю над softkeyboard, и все работает в сервисе. и так, как я могу получить текущий EditText в сервисе..