setOnFocusChangeListener不会隐藏键盘

时间:2013-06-04 13:27:57

标签: android keyboard android-edittext hide

我试图在setOnFocuslistener上失去焦点时隐藏我的键盘。由于某种原因,它不起作用......这是我的xml:

<EditText
    android:id="@+id/AgePicker"
    android:layout_width="113dp"
    android:layout_column="2"
    android:layout_columnSpan="2"
    android:layout_gravity="left|bottom"
    android:layout_row="4"
    android:background="#ffffff"
    android:clickable="true"
    android:focusable="true"
    android:hint="@string/edit_message"
    android:singleLine="true"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/black_overlay" />

和我的代码:

setAge.setOnFocusChangeListener(new View.OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                String sAge = setAge.getText().toString();
                Age = Integer.parseInt(sAge);

                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(setAge.getWindowToken(), 0);

                if (Age < 0) {
                    Toast.makeText(DietActivity.this,
                            "Enter Computable Values", Toast.LENGTH_SHORT)
                            .show();

                }

            }

        }
    });

我也在我的xml中使用这些:

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

请帮帮我。我想要的只是当edittext失去焦点时键盘隐藏

2 个答案:

答案 0 :(得分:1)

嗯,这有点琐碎,但我会发布我的答案,也许它会帮助其他游泳池灵魂...... 这是我的代码:

setAge.setOnFocusChangeListener(new OnFocusChangeListener(){

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            String sAge = setAge.getText().toString();

            if (isNumeric(sAge) ) {
                Age = Integer.parseInt(sAge);

                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(setAge.getWindowToken(), 0);

                if (Age < 0) {
                    Toast.makeText(DietActivity.this,
                            "Enter Computable Values", Toast.LENGTH_SHORT)
                            .show();
                }
            } 

        }
    });

答案 1 :(得分:0)

这取决于当前有什么焦点...如果它的另一个editText需要关注,那么这可能会调出键盘...尝试明确地将焦点放在另一个元素上。