Очистить фокус EditText, когда кнопка возврата нажата, когда отображается экранная панель

Я знаю, что здесь есть довольно много вопросов относительно этого вопроса. Но у них нет ответа, который я ищу.

У меня есть 7 ET внутри ScrollView. Когда я запускаю приложение, ET не имеет фокуса, потому что я добавил следующие две строки в мой общий макет:

android:focusable="true" android:focusableInTouchMode="true" 

Когда я нажимаю на ET, отображается экранная клавиатура, которую я хочу, тогда я устанавливаю значение (допустим, 20). Я нажимаю «2», а затем «0», а затем нажимаю кнопку «Назад». В этот момент клавиатура исчезает, но фокус остается. Я также хотел бы очистить фокус, нажав кнопку «Назад», чтобы скрыть клавиатуру.

Поскольку, когда фокус очищается, расположение ET устанавливается так, как я хочу.

Все они имеют о некотором коде, который:

  // Right Cable RightCable = (EditText) findViewById (R.id.RightCable); RightCable.setRawInputType(Configuration.KEYBOARD_12KEY); RightCable.setOnFocusChangeListener(FocusChanged); RightCable.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { if(RightCable.isFocused()){ LengthRightCable = Double.parseDouble(RightCable.getText().toString()); Calculate(); } } public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) { if(s.toString().matches("")) { RightCable.setText("0.00"); Selection.setSelection(RightCable.getText(), 0, 4); } } }); 

Я использую прослушиватель фокуса, чтобы изменить вход ET на число, например 5.00 вместо 0.

 OnFocusChangeListener FocusChanged = new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { EditText et = (EditText) v; et.setSelection(0, et.getText().length()); if(!hasFocus){ String userInput = et.getText().toString(); int dotPos = -1; for (int i = 0; i < userInput.length(); i++) { char c = userInput.charAt(i); if (c == '.') { dotPos = i; } } if (dotPos == -1){ et.setText(userInput + ".00"); } else if(userInput.length() < 5) { if ( userInput.length() - dotPos == 1 ) { et.setText(userInput + "00"); } else if ( userInput.length() - dotPos == 2 ) { et.setText(userInput + "0"); } } } } }; 

Для этого вам нужно взять onTouchListener на родительский макет файла макета. На TouchListener вам нужно закодировать, чтобы скрыть клавиатуру, щелкнув вне EditText. Чтобы решить эту проблему, следуйте инструкциям XML Layout и Java.

Следуйте следующему URL-адресу, чтобы решить эту проблему. http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html