이 질문과 관련하여 여기에 몇 가지 질문이 있습니다. 그러나 그들 중 누구도 내가 찾고있는 대답을 가지고 있지 않습니다.소프트 키 보드가 표시 될 때 뒤로 버튼을 누를 때 EditText를 누르십시오
저는 ScrollView 안에 7 ET가 있습니다. 나는 응용 프로그램을 시작할 때 어떤 ET가 내 전체 레이아웃에 다음 두 줄을 추가했기 때문에 포커스가 없습니다 : 내가 ET 클릭하면
android:focusable="true"
android:focusableInTouchMode="true"
가 softkeyboard가 표시됩니다, 내가 원하는, 그럼 내가 값을 설정 (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);
}
}
});
내가 5.00 같은 숫자로 ET의 입력을 변경하는 대신 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");
}
}
}
}
};
당신이 이것에 대한 해결책을 발견 한이 문제를 해결하려면 다음 URL을 따라 따르십시오? – PrisonMike
첨부 된 링크에서 Kacy 대답을 강력하게 추천합니다 : http://stackoverflow.com/questions/13975058/make-edittext-lose-focus-on-back-press –