Tôi biết rằng có một số câu hỏi ở đây liên quan đến câu hỏi này. Nhưng không ai trong số họ có câu trả lời mà tôi đang tìm kiếm.Xóa tiêu điểm EditText khi nhấn nút quay lại khi phím chức năng hiển thị
Tôi có 7 ET bên trong một ScrollView. Khi tôi khởi động ứng dụng không ET có tập trung bởi vì tôi đã thêm hai dòng sau để bố trí tổng thể của tôi:
android:focusable="true"
android:focusableInTouchMode="true"
Khi tôi bấm vào một ET the softkeyboard được hiển thị, mà tôi muốn, sau đó tôi thiết lập giá trị (Hãy nói 20). Tôi bấm một '2' theo sau là '0' và sau đó nhấn nút quay lại. Tại thời điểm này bàn phím biến mất, nhưng tiêu điểm vẫn nằm. Tôi cũng muốn xóa tiêu điểm khi nhấn nút quay lại để ẩn bàn phím.
Vì khi tiêu điểm bị xóa, bố cục của ET được đặt như tôi muốn.
Tất cả họ đều có về một số mã, đó là:
// 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);
}
}
});
tôi sử dụng một người biết lắng nghe tập trung để thay đổi đầu vào của ET đến một số mặt hàng như 5.00 thay vì 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");
}
}
}
}
};
bạn đã tìm thấy giải pháp cho điều này chưa? – PrisonMike
Tôi rất khuyên bạn nên trả lời Kacy trong liên kết đính kèm: http://stackoverflow.com/questions/13975058/make-edittext-lose-focus-on-back-press –