如何在点击android
中的edittext时阻止virtual keyboard
答案 0 :(得分:46)
Here是一个可以满足您需求的网站。
总结一下,它提供了来自Android开发者的InputMethodManager
和View
的链接。它将引用getWindowToken
内的View
和hideSoftInputFromWindow()
的{{1}}
链接中给出了更好的答案,希望这会有所帮助。
从上面发布的链接中,这是一个使用onTouch事件的示例:
InputMethodManager
这是同一网站的另一个例子。这声称可行,但似乎是一个坏主意,因为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
}
});
希望这能指出你正确的方向
答案 1 :(得分:7)
更简单的方法是将编辑文本的可聚焦属性设置为false。在EditText的XML集中 机器人:可聚焦= “假”
答案 2 :(得分:3)
另一种更简单的方法是将android:focusableInTouchMode="false"
行添加到EditText
的xml中。希望这可以帮助。
答案 3 :(得分:0)
对于光标定位,您可以使用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;
}
});
答案 4 :(得分:0)
执行此操作的最佳方法是将EditText中的标记textIsSelectable
设置为 true 。这将为EditText永久隐藏SoftKeyboard,但也会提供保留光标的额外好处,您可以选择/复制/剪切/粘贴。
您可以在xml布局中设置它,如下所示:
<EditText
android:textIsSelectable="true"
...
/>
或者以编程方式,像这样:
EditText editText = (EditText) findViewById(R.id.editText);
editText.setTextIsSelectable(true);
对于使用API 10及更低版本的任何人,此处提供了hack:https://stackoverflow.com/a/20173020/7550472