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

时间:2009-12-04 06:52:39

标签: android

如何在点击android

中的edittext时阻止virtual keyboard

5 个答案:

答案 0 :(得分:46)

Here是一个可以满足您需求的网站。

总结一下,它提供了来自Android开发者的InputMethodManagerView的链接。它将引用getWindowToken内的ViewhideSoftInputFromWindow()的{​​{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