我希望了解在输入文本到EditText后,隐藏键盘的最佳方法。
1)setonfocuschangelistener:此监听器仅在按下完成按钮或从一个EditText切换到另一个EditText时才触发吗?当我使用这种方法时,我无法隐藏键盘。
2)setOnTouchListener:当我使用此方法时,我可以隐藏键盘,但我怀疑可能会出现问题。在这种情况下,我将触摸侦听器添加到根LinearLayout中。以下是我使用的代码:
在主LinearLayout中,我使用了其他两个LinearLayout。上面的代码问题是,在某些时候当我按下键盘时它不会隐藏。 我的疑问是,我只为根布局添加了触摸监听器,没有给其他内部布局或其他控件(TextView)添加触摸监听器。当我触摸到其他控件或TextView周围的某些点(即内部布局)时,键盘不会隐藏。
这意味着我需要为根布局内的所有布局或控件添加touchListener吗? 如何更好地处理这种情况?
1)setonfocuschangelistener:此监听器仅在按下完成按钮或从一个EditText切换到另一个EditText时才触发吗?当我使用这种方法时,我无法隐藏键盘。
2)setOnTouchListener:当我使用此方法时,我可以隐藏键盘,但我怀疑可能会出现问题。在这种情况下,我将触摸侦听器添加到根LinearLayout中。以下是我使用的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
txtUserName = (EditText)findViewById(R.id.txtUserName);
btnLogin = (Button)findViewById(R.id.btnLogin);
layoutView = (LinearLayout)findViewById(R.id.li);
layoutView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(txtUserName
.getWindowToken(), 0);
return true;
}
});
}
在主LinearLayout中,我使用了其他两个LinearLayout。上面的代码问题是,在某些时候当我按下键盘时它不会隐藏。 我的疑问是,我只为根布局添加了触摸监听器,没有给其他内部布局或其他控件(TextView)添加触摸监听器。当我触摸到其他控件或TextView周围的某些点(即内部布局)时,键盘不会隐藏。
这意味着我需要为根布局内的所有布局或控件添加touchListener吗? 如何更好地处理这种情况?