1

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

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

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

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

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

对于我要求的具体问题和更具体的解决方案,我深表歉意。

对不起我的英语不好:D

4

2 回答 2

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
                        }
                    }
                });
于 2013-03-08T11:45:52.173 回答
-1

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

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

从这个属性你的键盘被隐藏了,之后你在你的 main.xml 文件中声明了 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"
于 2012-09-04T14:14:28.697 回答