仅当在任何编辑文本外单击时才隐藏数字键盘
Hide Numeric Keyboard ONLY WHEN clicked outside any of the Edit Text
我有三个不同的编辑文本,只能输入数值,因此点击任何一个编辑文本都会打开数字键盘。
我尝试为所有编辑文本实现 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);
}
}
});
这里是 'hideKeyBoard'
的实现
public void hideKeyboard(View view) {
InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
这很好用,但是,当我将焦点从一个 EditText 切换到另一个 EditText 时,键盘隐藏了。这种行为可能会让用户感到沮丧。
如何处理,避免不必要的隐藏键盘。
P.S 我需要确保键盘在任何情况下都是数字而不是字母。
感谢 MarianoZorrila 纠正我解决问题的方法。
这是我为解决这个问题所做的更改。
为我的相对布局提供了一个 ID
<RelativeLayout
...
...
android:id="@+id/parent">
对 Java 文件的修改
View parent = findViewById(R.id.parent);
parent.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(hasFocus){
hideKeyboard(view);
}
}
});
我有三个不同的编辑文本,只能输入数值,因此点击任何一个编辑文本都会打开数字键盘。
我尝试为所有编辑文本实现 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);
}
}
});
这里是 'hideKeyBoard'
的实现public void hideKeyboard(View view) {
InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
这很好用,但是,当我将焦点从一个 EditText 切换到另一个 EditText 时,键盘隐藏了。这种行为可能会让用户感到沮丧。
如何处理,避免不必要的隐藏键盘。
P.S 我需要确保键盘在任何情况下都是数字而不是字母。
感谢 MarianoZorrila 纠正我解决问题的方法。
这是我为解决这个问题所做的更改。
为我的相对布局提供了一个 ID
<RelativeLayout ... ... android:id="@+id/parent">
对 Java 文件的修改
View parent = findViewById(R.id.parent); parent.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean hasFocus) { if(hasFocus){ hideKeyboard(view); } } });