我想知道在将文本输入到 EditText 后隐藏键盘的最佳方法。
1) setonfocuschangelistener :这个监听器是否仅在按下完成按钮或焦点从一个 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 添加到根布局内的所有布局或控件?如何更好地处理这种情况?