Tôi muốn biết cách tốt nhất để ẩn bàn phím sau khi nhập văn bản vào EditText.Cách tốt nhất để ẩn bàn phím trong Android
1) setonfocuschangelistener: Trình nghe này chỉ được kích hoạt, khi nhấn nút xong hay khi tiêu điểm thay đổi từ một EditText này sang một EditText khác? Khi tôi sử dụng phương pháp này, tôi không thể giấu bàn phím.
2) setOnTouchListener: Khi tôi sử dụng này, tôi có thể ẩn bàn phím, nhưng tôi nghi ngờ có thể có một vấn đề với điều này. Trong trường hợp này, tôi thêm trình nghe cảm ứng vào LinearLayout gốc. Mã sau tôi đã sử dụng:
@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;
}
});
}
Bên trong LinearLayout chính, tôi đang sử dụng hai LinearLayouts khác. Vấn đề mà tôi phải đối mặt với mã trên là ở một số điểm khi tôi nhấn, bàn phím không ẩn. Nghi ngờ của tôi là tôi chỉ thêm người nghe cảm ứng với bố cục gốc, không cho người nghe cảm ứng với bố cục bên trong khác hoặc các điều khiển khác (TextView). Khi tôi chạm vào các điều khiển khác hoặc một số điểm xung quanh TextView (ví dụ: bố trí bên trong), bàn phím không ẩn.
Điều đó có nghĩa là tôi có cần phải thêm touchListener vào tất cả bố cục hoặc điều khiển bên trong bố cục gốc không? Tình trạng này có thể được xử lý theo cách tốt hơn như thế nào?
Cảm ơn bạn bè đã trả lời của bạn. Chúng ta có thể sử dụng mã trên để ẩn bàn phím. Sai lầm mà tôi đã tạo ra thay vì thêm trình nghe cảm ứng vào bố cục gốc, tôi đã thêm trình xử lý cảm ứng với một bố cục bên trong. Do đó, tôi hy vọng đây cũng là phương pháp tốt nhất để ẩn bàn phím khi chúng tôi chạm vào bên ngoài EditText. Một lần nữa cảm ơn tất cả các câu trả lời của họ. Vì vậy, nếu bất kỳ người dùng nào có đặc quyền để đánh dấu câu trả lời này là đúng, hãy làm điều đó. Chỉ sau khi xác minh mã. –