我有三个不同的编辑文本,限制只输入数值,因此点击任何一个编辑文本会打开数字键盘。
我尝试为所有编辑文本实现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 我需要确保键盘在任何情况下都不是按字母顺序排列的。
答案 0 :(得分:0)
感谢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);
}
}
});