我想知道在將文本輸入到EditText後隱藏鍵盤的最佳方法。在Android中隱藏鍵盤的最佳方法
1)setonfocuschangelistener:只有按下done按鈕或焦點從一個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。我遇到上述代碼的問題是,當我按下某些時候,鍵盤不會隱藏。 我的疑惑是,我只在根佈局中添加touch偵聽器,沒有爲其他內部佈局或其他控件(TextView)提供觸摸偵聽器。當我觸摸其他控件或TextView周圍的某些點時(即內部佈局),鍵盤不會隱藏。
這意味着我需要將touchListener添加到根佈局內的所有佈局或控件? 如何以更好的方式處理這種情況?
謝謝朋友的回覆。我們可以使用上面的代碼來隱藏鍵盤。我做的錯誤是將觸摸偵聽器添加到根佈局,而不是將觸摸偵聽器添加到內部佈局中。因此,我希望當觸摸EditText之外時,這也是隱藏鍵盤的最佳方法。再次感謝所有人的回覆。因此,如果任何用戶有權將此標記爲正確答案,請執行此操作。只有在驗證了代碼之後。 –