有没有一种永久隐藏软键盘但仍然使EditText获得焦点的方法?

4
在我的安卓应用程序中,我有一个活动里面有三个EditText。我在该活动中创建了自己的数字键盘。每当我点击任何EditText时,软键盘就会弹出来。我希望永久性地阻止它在这个活动中出现,但如果用户点击一个EditText,它应该处于焦点状态,就像光标一样闪烁。你有什么思路吗?谢谢。

可能是重复的问题:如何关闭/隐藏Android软键盘? - Seshu Vinay
当我第二次点击EditText时,键盘会出现。我想永久关闭它并保持EditText处于焦点状态。所以这不是重复的信息。 - Piscean
4个回答

6
手动隐藏键盘
在这里手动隐藏键盘。
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    YourEditText.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            mgr.hideSoftInputFromWindow(v.getWindowToken(), 0);

        }
    });
      YourEditText.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mgr.hideSoftInputFromWindow(v.getWindowToken(), 0);

        }
    });

0

Android Studio建议使用以下命令来防止键盘弹出。我将其放入一个函数中,并为每个EditText对象调用了该函数。

private void hideKeyboard(EditText editText){
    editText.setShowSoftInputOnFocus(false);
}

0

不需要为每个EditText设置hideSoftInputFromWindow(),如果您将参数设置为活动的父布局,则会更好。假设活动的父布局是LinearLayout,则:

linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
    /* Hide keyboard from this activity permanently */
    InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    manager.hideSoftInputFromWindow(linearLayout.getWindowToken(),0);

或者您也可以为 XML 实现相同的功能

<EditText 
android:focusable="false"

.../>

这将永久禁用该编辑框的键盘


0

我检查了一下,它正常工作。 InputMethodManager imm;

 edittext1 = (EditText) findViewById(R.id.editText1);

    imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

   edittext1.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

     imm.hideSoftInputFromWindow(edittext1.getWindowToken(), 0);
        }
    });

很奇怪,因为它与我的应用程序实际上不起作用。每次我点击EditText时,软键盘就会出现。 - Piscean
我用我的三星Galaxy Note 2 4.1手机检查,软键盘没有出现。我会再检查一些其他的。 - harikrishnan
我正在使用三星S3和摩托罗拉ET1进行测试。在两者上都出现了软键盘。 - Piscean
请尝试此链接:https://dev59.com/vHNA5IYBdhLWcg3wC5Xh?rq=1 - harikrishnan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接