在Android 4中键入EditText时隐藏软键盘

时间:2012-11-10 13:49:12

标签: android android-edittext calculator virtual-keyboard

我正在为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,科学计算器中制作它。对此我会很乐意提出任何有用的建议。 附:抱歉我的英文。

2 个答案:

答案 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