【发布时间】:2009-12-04 06:52:39
【问题描述】:
如何在android中点击edittext时阻止virtual keyboard
【问题讨论】:
标签: android
如何在android中点击edittext时阻止virtual keyboard
【问题讨论】:
标签: android
Here 是一个可以为您提供所需内容的网站。
总而言之,它提供了来自 Android 开发者的 InputMethodManager 和 View 的链接。它将引用View 和hideSoftInputFromWindow() 内部的getWindowToken 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
}
});
希望这会为您指明正确的方向
【讨论】:
更简单的方法是将编辑文本的焦点属性设置为false。在您的 EditText 的 XML 集中 android:focusable="假"
【讨论】:
另一种更简单的方法是将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 永久隐藏软键盘,但也将提供保留光标的额外好处,您将能够选择/复制/剪切/粘贴。
你可以像这样在你的xml布局中设置它:
<EditText
android:textIsSelectable="true"
...
/>
或者以编程方式,像这样:
EditText editText = (EditText) findViewById(R.id.editText);
editText.setTextIsSelectable(true);
对于使用 API 10 及以下版本的任何人,此处提供 hack:https://stackoverflow.com/a/20173020/7550472
【讨论】: