4

有一个页面,用户可以在需要时发送电子邮件、短信或致电其客人。问题是当用户向其客人发送电子邮件时,键盘并没有隐藏。即使我在解决这个问题时遇到了一个小问题,但似乎仍然很难找到类似的帖子来解决它。我还将制作屏幕截图并将它们放在这里。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

如您所见,发送邮件后键盘并没有隐藏。

4

7 回答 7

7
Intent sendIntent = new Intent(Intent.ACTION_SEND);
                            sendIntent.setType("text/plain");
                            sendIntent.putExtra(Intent.EXTRA_EMAIL,
                                    new String[] { **EmailAddress** });
                            startActivityForResult(sendIntent, 1);




   @Override
    protected void onActivityResult(int arg0, int arg1, Intent arg2) {
        super.onActivityResult(arg0, arg1, arg2);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                InputMethodManager inputManager = (InputMethodManager) activity
                        .getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(**AnyViewOfScreen**.getWindowToken(),
                        InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }, 300);
    }
于 2015-04-22T08:12:33.100 回答
5

只需在清单中为所需活动添加以下代码即可:

android:windowSoftInputMode="stateAlwaysHidden"
android:configChanges="keyboardHidden"
于 2012-04-26T15:25:55.953 回答
3

当键盘显示和隐藏自身时,它不是覆盖,但这是我用来根据需要隐藏和显示键盘的两种方法。

    public void hideKeyboard(final View aView){
                 aView.post(new Runnable() {
                    @Override
                    public void run(){

                    InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); 
                    inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
                     }
                 }
    }
    public void showKeyboard(final View aView) {
        aView.post(new Runnable() {
            @Override
            public void run() {

                InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                inputMethodManager.toggleSoftInputFromWindow(ListingScreen.this.getCurrentFocus().getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
            }
        });
    }

当您调用隐藏/显示键盘时,传入您的当前视图。后可运行线程将等待运行,直到视图完成加载,然后关闭键盘。

于 2012-04-20T12:54:13.863 回答
3

希望这可以帮助某人:

@Override
protected void onResume() {
    super.onResume();
    Log.d("OnResume", "Called");
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            InputMethodManager inputManager = (InputMethodManager) LocationDetailActivity.this
                    .getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                    InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }, 300);

}

如果您的布局中没有任何可聚焦的视图,只需将虚拟线性布局添加到您的 xml

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <requestFocus />
</LinearLayout>
于 2015-06-09T07:03:38.207 回答
0

在您想要隐藏键盘的地方调用此方法(例如,当您单击发送电子邮件按钮时调用此方法)

protected void showVirturalKeyboard()
{

    Timer timer = new Timer();
    timer.schedule(new TimerTask()
    {
        @Override
        public void run()
        {
            InputMethodManager m = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            if(m != null)
            {
                m.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
            }
        }
    }, 100);
}
于 2012-04-20T13:01:31.140 回答
0

在尝试了我在 StackOverflow 上找到的所有解决方案后,似乎没有任何效果。最后我确实找到了一种强制关闭键盘的方法,但并不理想。

您可以在 Android Manifest 中为该活动设置 android:windowSoftInputMode="adjustPan"。

这里解释了这个不幸的副作用http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

“活动的主窗口没有调整大小来为软键盘腾出空间。相反,窗口的内容会自动平移,这样当前的焦点就不会被键盘遮挡,用户总是可以看到他们正在输入的内容。这通常是不如调整大小可取,因为用户可能需要关闭软键盘才能到达窗口的模糊部分并与之交互。”

于 2014-08-04T10:32:08.130 回答
-1

我有类似的问题。Gmail 发送后会隐藏键盘。当您返回应用程序时,它会专注于其他事情。如果您使用较慢的设备,您会看到 gmail 在发送消息后隐藏了键盘。

于 2013-07-26T09:51:49.497 回答