我正在为Android编写计算器,用于输入表达式我使用EditText。当我创建我的按钮 - 我不需要软件键盘,但我想更改光标位置,文本选择,复制,粘贴。总而言之 - 一切都是这样,只显示虚拟键盘。 在版本2.3中,我可以写:
EditText.setInputType (InputType.TYPE_NULL);
它完美无缺。在光标的版本4中没有显示,菜单不起作用等。尝试了很多方法 - 你不能移动光标,键盘显示,它从来没有真正解释过。
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); //cursor not showing
------------------------------------------------------------------------
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); //not working
我想在Panecal,MobiCalc Free,科学计算器中制作它。对此我会很乐意提出任何有用的建议。 附:抱歉我的英文。
答案 0 :(得分:2)
在下面发布的链接中,这是一个使用Edittext
进行消费的示例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 even
}
});
希望这能指出你正确的方向
上述答案取自 - how to block virtual keyboard while clicking on edittext in android?
这也可能有用
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
答案 1 :(得分:0)
确切的解决方案是将EditText中的标记textIsSelectable
设置为 true 。这将保留光标,您将能够使用基本的选择/复制/剪切/粘贴等功能。您可以在xml布局中设置它,如下所示:
您可以通过编程方式设置它:
EditText edit_text = (EditText) findViewById(R.id.editText);
edit_text.setTextIsSelectable(true);
或者在您的XML布局中:
<EditText
...
android:textIsSelectable="true"
/>
对于使用API 10及更低版本的任何人,此处提供了hack:https://stackoverflow.com/a/20173020/7550472