Как отключить функции клавиатуры и курсора EditText ..? - PullRequest
4 голосов
/ 23 марта 2012

Я делаю приложение с моей собственной клавиатурой, и я хочу полностью отключить виртуальную клавиатуру Android по умолчанию.

Я попробовал это:

 myEditText.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v) 
            {
                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                 imm.hideSoftInputFromWindow(keresetEditText.getWindowToken(), 0);

            }
         });

Это работает очень хорошо, но случайноя только что обнаружил ошибку, которая действительно доставляет меня к черту:

Когда я провожу пальцем по EditText, просто появляется софт-клавиатура!Итак, вывод таков: onClickListener просто не работает, пока я двигаюсь, и не нажимаю.

Я пробовал TouchListener, но он просто не работал!Любые советы, как я могу полностью отключить виртуальную клавиатуру?Мне не нужно это во всем приложении.

Другое дело: я мог бы задать другой вопрос для stackoverflow, но я думаю, что это логично, вот так: Когда я нажимаю на курсор EditText, я могу переместить его в текст внутримой EditText, но я не хочу, чтобы он был включен, как это.Могу ли я отключить перемещение курсоров ???Поэтому мне нужен мигающий курсор, но он полностью находится в неподвижном положении.

1 Ответ

5 голосов
/ 23 марта 2012

Вот несколько решений для вас:

  • , если вам никогда не понадобится программная клавиша для отображения в этом действии, вы можете установить атрибут android:windowSoftInputMode="stateAlwaysHidden" в манифесте

  • отключить редактирование текста.У вас не будет мигающего курсора (или вообще никакого курсора), но будет невозможно открыть программную клавиатуру с помощью отключенного редактирования текста, но при этом вы сможете установить свой собственный текст в коде

  • просто используйте TextView, устанавливая в качестве фона android.R.drawable.edit_text. Он будет выглядеть как EditText, оставаясь только текстовым представлением, доступным только для чтения, но позволяющим вам устанавливать любое значение из кода.Опять же, у вас все еще нет мигающего курсора

  • , устанавливающего атрибуты EditText для фокуса и кликабельности в false.Редактируемый текст никогда не получит фокус, поэтому на экранной клавиатуре не будет отображаться

  • (это взлом), поместите невидимую кнопку поверх текста редактирования, поэтому щелчок по тексту редактирования фактическибыть перехвачен кнопкой, которая ничего не делает.Редактируемый текст будет по-прежнему фокусироваться с помощью трекбола или клавиш со стрелками, и у вас все равно не будет мигающего курсора

...