Clear focus EditText when the back button is pressed when the on-screen bar is displayed

I know that there are several questions regarding this issue. But they do not have the answer I am looking for.

I have 7 ET inside ScrollView. When I run the application, ET has no focus, because I added the following two lines to my general layout:

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

When I click on ET, the on-screen keyboard I want is displayed, then I set the value (say 20). I press "2" and then "0" and then press the "Back" button. At this point, the keyboard disappears, but the focus remains. I would also like to clear the focus by clicking the back button to hide the keyboard.

Because when the focus clears, the ET location is set the way I want.

They all have about some code that:

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

I use a focus listener to change the ET input to a number, like 5.00 instead of 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");
                }
            }
        }
    }

};
+5
source share
1 answer

To do this, you need to take onTouchListener in the parent layout of the layout file. on TouchListener you need to encode to hide the keyboard by clicking outside of the EditText. To solve this problem, follow the XML Layout and Java instructions.

Please follow the following url to solve this problem http://amitthaperandroidquery.blogspot.com/2011/10/remove-keyboard-after-click-outside.html

0
source

All Articles