Очистить фокус EditText при нажатии кнопки назад, когда отображается программная клавиша - PullRequest
5 голосов
/ 04 сентября 2011

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

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

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

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

Потому что, когда фокус очищен, компоновка ЕТ установлена ​​так, как я хочу.

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

    // 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");
                }
            }
        }
    }

};

1 Ответ

0 голосов
/ 12 октября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...