Как заблокировать виртуальную клавиатуру при нажатии на текст редактирования в Android? - PullRequest
17 голосов
/ 04 декабря 2009

Как заблокировать virtual keyboard при нажатии на текст редактирования в андроиде

Ответы [ 5 ]

46 голосов
/ 04 декабря 2009

Здесь - это сайт, который даст вам то, что вам нужно.

В качестве резюме, он предоставляет ссылки на InputMethodManager и View от разработчиков Android. Он будет ссылаться на getWindowToken внутри View и hideSoftInputFromWindow() для InputMethodManager

Лучший ответ дан в ссылке, надеюсь, это поможет.

EDIT

Из приведенной выше ссылки приведен пример использования события onTouch:

editText_input_field.setOnTouchListener(otl);

private OnTouchListener otl = new OnTouchListener() {
    public boolean onTouch (View v, MotionEvent event) {
            return true; // the listener has consumed the event
    }
 };

Вот еще один пример с того же сайта. Это утверждает, что работает, но кажется плохой идеей, поскольку ваш EditBox равен NULL, он больше не будет редактором:

MyEditor.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
    int inType = MyEditor.getInputType(); // backup the input type
    MyEditor.setInputType(InputType.TYPE_NULL); // disable soft input
    MyEditor.onTouchEvent(event); // call native handler
    MyEditor.setInputType(inType); // restore input type
    return true; // consume touch event
}
});

Надеюсь, это направит вас в правильном направлении

7 голосов
/ 07 августа 2013

Более простой способ - установить фокусируемое свойство текста редактирования false. В вашем наборе EditText XML андроид: фокусируемый = "ложь"

3 голосов
/ 12 февраля 2014

Другой более простой способ - добавить строку android:focusableInTouchMode="false" в xml вашего EditText. Надеюсь это поможет.

0 голосов
/ 14 февраля 2017

Лучший способ сделать это - установить флаг textIsSelectable в EditText на true . Это навсегда скроет SoftKeyboard для EditText, но также обеспечит дополнительный бонус за сохранение курсора, и вы сможете выбрать / копировать / вырезать / вставить.

Вы можете установить его в xml-макете так:

<EditText
    android:textIsSelectable="true"
    ...
/>

Или программно, как это:

EditText editText = (EditText) findViewById(R.id.editText);
editText.setTextIsSelectable(true);

Для тех, кто использует API 10 и ниже, здесь предоставляется взлом: https://stackoverflow.com/a/20173020/7550472

0 голосов
/ 18 октября 2012

Для позиционирования курсора вы можете использовать Selection.setSelection(...), я только что попробовал это, и это сработало:

final EditText editText = (EditText) findViewById(R.id.edittext);
editText.setOnTouchListener(new View.OnTouchListener() {
     @Override
     public boolean onTouch(View view, MotionEvent motionEvent) {

         //change the text here

         Selection.setSelection(editText.getText(), editText.length());
         return true;
     }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...