[Android]防止在EditText的焦点发布时隐藏键盘

时间:2018-05-17 01:51:11

标签: android android-edittext soft-keyboard

我有一个包含EditText和Button的片段。

我的目标是实现以下行为。

  1. 显示此片段时,不会出现软键盘。
  2. 当EditText聚焦时,会出现软键盘。
  3. 用户通过软键盘输入文字。
  4. 单击按钮时,EditText的文本被清除,保持EditText具有焦点,并保持软键盘显示
  5. 当用户点击除EditText和Button之外的任何地方时,软键盘会隐藏。
  6. 然而,我无法实现第4和第5步。

    单击按钮时,EditText的焦点会自动释放,软键盘也会隐藏。 (实际上,无论我在哪里点击,除了EditText,它都会发生)

    我可以通过在Button的OnClickListener中以编程方式显示键盘来实现类似的行为,但这不是我真正想要的,因为软键盘在隐藏后会出现。

    现在,我怎样才能实现第4步?

1 个答案:

答案 0 :(得分:0)

单击按钮时

4:将文本值设置为空字符串

editText.setText("");

这不会影响任何东西,但会将editText设置为空字符串,并保持软键盘显示。

在您的活动工具View.OnClickListener

5:,添加onClick()方法,如下所示:

@Override
    public void onClick(View view) {
        if(view.getId() == R.id.relativelayout_id){
            // hide soft keyboard on touching the background
            InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        }
    }

添加此行以停止点击声音,当您点击背景时,您不需要这样做。

relativeLayout.setSoundEffectsEnabled(false);