Wiem, że istnieje sporo pytań dotyczących tego pytania. Ale żaden z nich nie ma odpowiedzi, której szukam.Wyczyść fokus EditText po naciśnięciu przycisku Wstecz przy wyświetlaniu klawisza programowalnego
Mam 7 ET wewnątrz ScrollView. Kiedy uruchomić aplikację ET nie ma skupić bo Dodałem następujące dwa wiersze do mojego ogólnego układu:
android:focusable="true"
android:focusableInTouchMode="true"
Kiedy klikam na ET the softkeyboard jest pokazane, co chcę, a następnie ustawić wartość (powiedzmy 20). Naciskam "2", a następnie "0", a następnie naciskam przycisk "Wstecz". W tym momencie klawiatura znika, ale ostrość pozostaje. Chciałbym również usunąć fokus, naciskając przycisk Wstecz, aby ukryć klawiaturę.
Ponieważ po usunięciu fokusu układ ET jest ustawiony tak, jak chcę.
Oni wszyscy mają o jakiś kod, który jest:
// 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);
}
}
});
używam ostrości słuchacza, aby zmienić wejście ET do liczby jak 5.00 zamiast 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");
}
}
}
}
};
znalazłeś rozwiązanie tego problemu? – PrisonMike
Gorąco polecam odpowiedź Kacy w załączonym linku: http://stackoverflow.com/questions/13975058/make-edittext-lose-focus-on-back-press –