Как заблокировать virtual keyboard
при нажатии на edittext в android
Как блокировать виртуальную клавиатуру при нажатии на edittext в android?
Ответ 1
Здесь - это веб-сайт, который даст вам то, что вам нужно.
В качестве сводки он предоставляет ссылки на InputMethodManager
и View
от разработчиков Android. Он будет ссылаться на getWindowToken
внутри View
и hideSoftInputFromWindow()
для InputMethodManager
Лучший ответ приведен в ссылке, надеюсь, что это поможет.
ИЗМЕНИТЬ
Из вышеприведенной ссылки приведен пример использования события 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
}
});
Надеюсь, это указывает на то, что вы в правильном направлении
Ответ 2
Простейший способ - установить фокусное свойство текста редактирования false. В вашем XML-редакторе EditText андроид: фокусируемый = "ложь"
Ответ 3
Другим более простым способом является добавление строки android:focusableInTouchMode="false"
в ваш EditText
xml. Надеюсь это поможет.
Ответ 4
Для позиционирования курсора вы можете использовать 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;
}
});
Ответ 5
Лучший способ сделать это - установить флаг textIsSelectable
в EditText на true. Это спрячет SoftKeyboard навсегда для EditText, но также предоставит дополнительный бонус для сохранения курсора, и вы сможете выбрать/скопировать/вырезать/вставить.
Вы можете установить его в своем XML-макете следующим образом:
<EditText
android:textIsSelectable="true"
...
/>
Или программно, например:
EditText editText = (EditText) findViewById(R.id.editText);
editText.setTextIsSelectable(true);
Для тех, кто использует API 10 и ниже, здесь можно найти хакеры: fooobar.com/info/139478/...