在Android中显示/隐藏软键盘事件

时间:2012-09-04 13:27:48

标签: android events keyboard android-softkeyboard

我需要从Android中的SoftKeyboard获取Show / Hidden事件。

我做了一项研究,但没有任何效果。

我想要那个'因为我们正在使用低分辨率的平板电脑5.0',所以当您编辑EditText时,键盘会全屏显示,然后按或“输入或下一个”键,或者你按下后退按钮来隐藏键盘...我需要用新值更新一些字段,但我不能使用TextWatcher'因为有一些业务逻辑在哪些是正确的字段要更新,'因为我只是想要在用户真正完成输入时更新。

并且onFocusChanged不是一个选项,因为我们不希望我们的客户需要在下一个字段中占用,并隐藏键盘以查看新值。

我也不想覆盖onTouchEvent,看看用户cliked的位置与他正在编辑的字段是否相同。

很抱歉我要求的具体问题和更具体的解决方案。

抱歉我的英语不好:D

2 个答案:

答案 0 :(得分:4)

使用树形视图观察器检测视图高度的任何变化,并且可以检查键盘状态

                final View activityRootView = findViewById(R.id.chat_pane_root_view);
                activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
                {
                    @Override
                    public void onGlobalLayout()
                    {
                        InputMethodManager mgr = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
                        if(mgr.isAcceptingText())
                        {
                             //keyboard is up
                        }
                    }
                });

答案 1 :(得分:-1)

首先,您在清单文件中声明您的活动声明如下

<activity android:name="Map"  android:windowSoftInputMode="stateHidden">

从此属性中隐藏了键盘, 在此之后,您将在main.xml文件edittext中声明imeOption属性,如此

<EditText
                    android:id="@+id/edttexttitle"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="5dp"
                    android:layout_marginTop="5dp"
                    android:hint="@string/tasktitle"
                    android:imeOptions="actionNext"
                    android:inputType="text"
                    android:textSize="@dimen/font_size_medium"
                    android:textColor="@color/darkgray1" />

这个代码是第一个edittext,如果多于一个,如果只有一个edittext,则需要更改edittext的imeOption,如

android:imeOptions="actionGo"