Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 仅当在任何编辑文本之外单击时才隐藏数字键盘_Android_Touch_Android Softkeyboard - Fatal编程技术网

Android 仅当在任何编辑文本之外单击时才隐藏数字键盘

Android 仅当在任何编辑文本之外单击时才隐藏数字键盘,android,touch,android-softkeyboard,Android,Touch,Android Softkeyboard,我有三种不同的编辑文本,限制只输入数值,因此点击任何一种编辑文本都会打开数字键盘 我尝试为所有编辑文本实现setOnFocusChangeListener,这确保当用户点击任何编辑文本之外的任何位置时隐藏键盘 editText1.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) {

我有三种不同的编辑文本,限制只输入数值,因此点击任何一种编辑文本都会打开数字键盘

我尝试为所有编辑文本实现setOnFocusChangeListener,这确保当用户点击任何编辑文本之外的任何位置时隐藏键盘

editText1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            hideKeyboard(v);
        }
    }
});

editText2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            hideKeyboard(v);
        }
    }
});

editText3.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            hideKeyboard(v);
        }
    }
});
下面是“隐藏板”的实现

public void hideKeyboard(View view) {
        InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
不过,当我将焦点从一个EditText更改为另一个EditText时,键盘会隐藏。这种行为可能会让用户感到沮丧

我如何处理它,避免不必要的隐藏键盘

editText1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            hideKeyboard(v);
        }
    }
});

editText2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            hideKeyboard(v);
        }
    }
});

editText3.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            hideKeyboard(v);
        }
    }
});

p.S我需要确保键盘在任何情况下都是数字而不是字母。

感谢MarianoZorrila纠正了我解决问题的方法。
以下是我为解决此问题所做的更改

  • 为我的相对布局提供了一个Id

    <RelativeLayout
    ...
    ...
    android:id="@+id/parent">
    

  • 感谢MarianoZorrila纠正了我解决问题的方法。
    以下是我为解决此问题所做的更改

  • 为我的相对布局提供了一个Id

    <RelativeLayout
    ...
    ...
    android:id="@+id/parent">
    

  • 当用户点击其他EditText时,上一个EditText将失去焦点。。。然后,隐藏键盘。也许你可以在“如果用户关注:RelativeLayout、LinearLayout等”中考虑隐藏键盘,而不是隐藏在键盘之外的任何地方EditText@Mariano不幸的是,您建议的方式显示了按字母顺序排列的键盘(因为我的PS),您可以在布局中发布exittext xml吗?您可以将编辑文本设置为始终为数字。@MarianoZorrilla非常感谢您的帮助,您的方法很有效。很抱歉没有感谢你早些时候的帮助。我有几天没有上网。没问题:)很高兴我能帮上忙当用户点击其他EditText时,前一个EditText会失去焦点。。。然后,隐藏键盘。也许你可以在“如果用户关注:RelativeLayout、LinearLayout等”中考虑隐藏键盘,而不是隐藏在键盘之外的任何地方EditText@Mariano不幸的是,您建议的方式显示了按字母顺序排列的键盘(因为我的PS),您可以在布局中发布exittext xml吗?您可以将编辑文本设置为始终为数字。@MarianoZorrilla非常感谢您的帮助,您的方法很有效。很抱歉没有感谢你早些时候的帮助。我有几天没上网。没问题:)很高兴我能帮上忙