如何在android中点击edittext时阻止虚拟键盘?

如何在android中点击edittext时阻止virtual keyboard

这是一个网站,会给你你所需要的。

作为总结,它提供了Android Developers的InputMethodManagerView链接。 它将在View引用getWindowTokenInputMethodManager引用hideSoftInputFromWindow()

链接中给出了更好的答案,希望这有助于。

编辑

从上面发布的链接,下面是一个消费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 } }; 

这是来自同一个网站的另一个例子。 这声称工作,但似乎是一个坏主意,因为你的EditBoxNULL它将不再是一个编辑器:

 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 } }); 

希望这个指向你正确的方向

更简单的方法是将编辑文本的可聚焦属性设置为false。 在你的EditText的XML设置android:focusable =“false”

另一个更简单的方法是将android:focusableInTouchMode="false"行添加到您的EditText的xml中。 希望这可以帮助。

对于游标定位你可以使用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; } }); 

最好的方法是将EditText中的标志textIsSelectable设置为true 。 这将永久隐藏EditText的SoftKeyboard,但也将提供保留光标的额外奖励,您将能够select/复制/剪切/粘贴。

你可以像这样在你的xml布局中设置它:

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

或者以编程方式,如下所示:

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

对于任何使用API​​ 10及以下版本的人,这里都提供了黑客攻击: https : //stackoverflow.com/a/20173020/7550472