首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在EditText外单击后在android上隐藏软键盘?

在Android上隐藏软键盘的方法有多种,以下是一种常用的方法:

  1. 首先,需要获取当前的输入法管理器(InputMethodManager)对象:InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
  2. 然后,调用hideSoftInputFromWindow()方法隐藏软键盘。该方法需要传入两个参数:EditText的窗口标识符和隐藏软键盘的选项。通常,可以使用当前活动的窗口标识符和0作为选项:imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

完整的代码示例:

代码语言:java
复制
import android.content.Context;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.editText);

        // 在EditText外单击时隐藏软键盘
        editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    hideKeyboard();
                }
            }
        });
    }

    private void hideKeyboard() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }
}

这样,当用户在EditText外单击时,软键盘就会被隐藏起来。

推荐的腾讯云相关产品:腾讯移动推送(https://cloud.tencent.com/product/tpns

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android之编辑框限定范围

登陆界面里我们通常都需要限定用户输入数据的范围,出生日期,密码长度……这些设置我们早已在pc熟悉得不得了,然而今天我们讲讲如何在android里设置编辑框的范围。...首先,我们知道,android的编辑框是EditText,而EditText有很方便的属性,就是inputType,这里我们可以设置数字,邮箱地址,密码等等的类型。...然后,如果你要设置数值的大小范围或者字符串的长度范围,那就需要我们代码里面设置了,我们需要为EditText添加TextWatcher监听器,该监听器最重要的方法就是afterTextChanged,...,可以IME Options里设置, 默认情况下软键盘右下角的按钮为“下一个”,点击会到下一个输入框,保持软键盘 image.png 设置 android:imeOptions="actionDone..." ,软键盘下方变成“完成”,点击光标保持原来的输入框上,并且软键盘关闭 image.png android:imeOptions="actionSend" 软键盘下方变成“发送”,点击光标移动下一个

1.6K30

实现Android键盘的中英文适配

“1234567890....android:inputType=”date” 日期键盘 android:inputType=”time” 时间键盘 2、Enter键图标的设置 想象一下,当我们EditText中完成了输入,想要以输入的内容作为关键字进行搜索时...activity里的状态,无论是隐藏还是显示 【C】stateHidden:用户选择activity时,软键盘总是被隐藏 【D】stateAlwaysHidden:当该Activity主窗口获取焦点时...,软键盘也总是被隐藏的 【E】stateVisible:软键盘通常是可见的 【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态 【G】adjustUnspecified...)findViewById(R.id.edit); edit.clearFocus(); 方法三: 强制隐藏Android输入法窗口 例如: EditText edit=(EditText)findViewById

2.2K10

Android UI开发中所遇到的各种坑

1.软键盘隐藏问题 问题描述:Activity按下返回调用finish()方法,界面已经销毁,但是软键盘依然还留在屏幕,这让当前正在显示的Activity没有输入框的完全没法看,非常严重的视觉影响。...尝试方案:寻找各种方法去隐藏软键盘,网上各种找。思路是活动退出时,会调用onDestroy方法销毁界面,在这个方法里面想办法隐藏界面即可。找到下面这种方法,但还是不行。...还尝试过用基类找到所有edittext然后让它们失去焦点,隐藏软键盘。...所以onPasue()方法里隐藏软键盘就有效,onDestroy()方法里不管用任何方法都是无效的。...注意点:用这个隐藏软键盘的方法,最好做为空判断,否则有可能会出现空指针的异常,当前界面没有控件获取焦点时,则getCurrentFocus()这个方法得到的是一个null.

1.3K20

Android开发 经验技巧汇总(基于Android Studio)(二)

实现 方法二:通过单元测试实现 4.EditText软键盘的调起、关闭 5.禁止EditText自动弹出软键盘 6.EditText输入文本从右边开始显示 7.判断APP是否联网 8.检查网络连接状态的变化无网络时跳转到设置界面...; } } (3)运行 常用的运行方法有三种: ①直接点击函数右边三角符号; ②.java文件右键,选择Run; ③点击工具栏的三角符号。 如下图所示 ?...4.EditText软键盘的调起、关闭 (1)EditText有焦点(focusable为true)阻止输入法弹出 editText.setOnTouchListener(new OnTouchListener...android:focusable="false"// 键盘永不弹出 5.禁止EditText自动弹出软键盘 (1)包含EditText的父布局中添加android:focusable="true"...|stateHidden"> (3)进入页面强制隐藏软键盘 如果前两种方法都不起作用的话,可以使用这种方法: /** * 隐藏输入软键盘 * @param context

1.3K20

Android富文本开发

压缩的图片大小应该和用来展示它的控件大小相近,一个很小的ImageView显示一张超大的图片不会带来任何视觉的好处,但却会占用相当多宝贵的内存,而且性能上还可能会带来负面影响。...,不主动弹软键盘第一个输入框的最直接父布局加入:android:focusable="true";android:focusableInTouchMode="true" (效果:软键盘不弹出,光标不显示...2:editText不获取焦点,当然软键盘不会主动弹出(光标也不显示) 第一个输入框的最直接父布局加入:android:focusable="true";android:focusableInTouchMode...stateUnchanged-不改变状态:当前界面软键盘状态由上个界面软键盘的状态决定; stateHidden-隐藏状态:进入页面,无论是否有输入需求,软键盘隐藏的,但是如果跳转到下一个页面软键盘是展示的...stateAlwaysHidden-总是隐藏状态:当设置该状态时,软键盘总是被隐藏,和stateHidden不同的是,当我们跳转到下个界面,如果下个页面的软键盘是显示的,而我们再次回来的时候,软键盘就会隐藏起来

8.4K20

Android开发中软键盘的显示和隐藏

而很多关键的逻辑代码,都是 InputMethodManagerService 中实现的。 特别说明:本文的所有分析的源码,都是基于 Android 26 的源码。...可以看到 1、2 都是有特殊含义的,实际它们并不影响显示,只是隐藏的时候,会有一些限制,这些后面看源码的时候再说,一般没有特别需要的话,我们直接传递 0 就好了。...而这不是绝对的,如果不是一个 EditText ,就必须要求这个 View 有两个属性,分别是:android:focusable="true" 和android:focusableInTouchMode...想要在页面一启动的时候就弹出键盘,可以 Activity ,设置 android:windowSoftInputMode 属性来完成,或者做一个延迟加载,View.postDelayed() 也是一个解决方案...2.4 切换键盘的弹出和隐藏 InputMethodManager 中,还提供了一个 toggleSoftInput() 方法,如同它的名字一样,它可以让软键盘在显示和隐藏之间切换。 ?

2.5K10

Android点击其他地方隐藏键盘

Android点击其他地方隐藏键盘 1.第一种:隐藏页面一进来EditText获取焦点就弹出软键盘 oncreate()里调用如下方法即可 /** * 隐藏软键盘 */...获取焦点已经弹起软键盘,点击其他空白区域隐藏软键盘 此方法可以写到BaseActivity中其他Activity就相应的也会继承 @Override public boolean dispatchTouchEvent...所在坐标和用户点击的坐标相对比, * 来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏 */ private boolean isShouldHideKeyboard...则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText,和用户用轨迹球选择其他的焦点 return false; } /** * 获取InputMethodManager...,隐藏软键盘 */ private void hideKeyboard(IBinder token) { if (token !

3.1K10

Android开发常用的知识点

尺寸做标注 EditText 去掉下划线 android:background="@null" 光标颜色和文字一样 android:textCursorDrawable="@null" 自定义光标颜色...EditText的控件中找一个,设置成 android:focusable="true" android:focusableInTouchMode="true" 软键盘不遮挡 解决Android软键盘在全屏下设置...="actionNext" android:nextFocusForward="@+id/userpwd_edittext" //密码输完 把焦点放到登录按钮 android:imeOptions=...stateHidden 当用户选择该Activity时,软键盘隐藏——也就是说,当用户确定导航到该Activity时,不管他离开的Activity的软键盘是可见还是隐藏都会被隐藏,不过当用户离开一个...stateAlwaysHidden 当该Activity主窗口获取焦点时,软键盘总是被隐藏的,不管是确认导航到该Activity还是Activity被覆盖显示出来。

2.5K10

Android开发笔记(一百四十八)自定义输入法软键盘

手机上输入文字,都是通过系统自带的软键盘,这个软键盘可以是Android自带的,也可以是第三方软键盘搜狗输入法。...那么这个软键盘又是如何实现的呢?其实它跟平常的自定义控件基本类似,只细节上有所差异,下面分步说明自定义软键盘的过程。...软键盘采取的是一种方式,只不过它的布局文件不是放在res/layout目录,而是保存在res/xml目录。...3、软键盘不是一个孤立的控件,它的按键动作需要实时某个编辑框中把数字显示出来,所以使用时还得给它绑定一个EditText,这样软键盘才知道我的按键要输出给这个EditText,而不是输出给那个EditText...EditText对象,即当软键盘发生按键动作时,要把按键结果显示在哪个EditText

2.4K30

Android使用Activity实现简单的可输入对话框

1、需求分析 众所周知,应用中这样那样的评论总是少不了的,有的应用是底部直接加一个EditText和一个Button,让用户输入文字或者表情之后点击按钮提交;而有的虽然也放置了EditText,但仅仅是一个...这里的效果可以细分为四点: 点击底部的按钮之后会弹出对话框,对话框在布局的底部; 对话框中有输入框EditText,可以输入内容; 对话框弹出EditText会自动获取焦点,弹出软键盘软键盘会把对话框顶上去...一开始我想到的是PopupWindow,但是由于里面有EditText,与软键盘交互起来很是头疼,于是改用了Activity。这样一来我们就可以像用Activity一样使用这个对话框,方便多了。...下面介绍两种方法: 3.1、使用InputMethodManager类显示软键盘 我们平时要让某个EditText获得焦点自动弹出软键盘可以这样写: InputMethodManager inputManager...其实软键盘没有自动弹出就是它搞的鬼,它表示一般情况下软键盘都是隐藏的。我们改成另外一个属性:stateVisible,它表示软键盘通常是可见的。 再来运行一下,软键盘就如期而至了。

2.7K20

Android软键盘输入处理技巧

今天我们来讨论一下Android中监听软键盘输入的使用方式。它允许用户输入文本和执行其他操作。但是,有时候我们需要在用户输入文本时进行一些特殊的处理,比如实时验证输入内容、限制输入字符的类型等。...因此,了解如何监听软键盘输入是非常重要的。 如何监听软键盘输入 Android中,我们可以使用EditText的TextWatcher接口来监听软键盘输入。...) { // 文本改变执行的操作 } }); 通过TextWatcher接口,我们能显示层进行输入监听,但如果我们需要在软键盘操作的过程中就监听用户的输入行为,又该如何实现呢...InputConnection Android开发中,InputConnection是一个用于与软键盘交互的接口。...它允许应用程序与用户输入进行交互,并处理输入文本的各种操作,插入、删除和替换文本。 InputConnection 是 Android 软键盘系统和 EditText 控件之间的桥梁。

34710

Android EditText监听回车键并处理两次回调问题

前言 我们都知道,登面,搜索等等有EditText控件的界面上,当用户输入完内容,点击回车键执行逻辑会有非常好的用户体验,所以今天我们来学习如何监听EditText监听回车键并处理监听时发生了两次回调问题...代码 首先我们xml布局中添加一个要监听的EditText <?xml version="1.0" encoding="utf-8"?...="match_parent" android:layout_height="wrap_content" / </LinearLayout 要想监听到软键盘按下什么键,就需要使用setOnKeyListener...日志输出 E/MainActivity: onKey: 按下回车键 也可以修改editText的回车样式,即是把EditText的ImeOptions属性设置成不同的值,Enter键就会显示不同的文字或图案...actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框 以上就是本文的全部内容,希望对大家的学习有所帮助。

1.6K31

Android编程之ListView和EditText发布帖子隐藏软键盘功能详解

本文实例讲述了Android编程之ListView和EditText发布帖子隐藏软键盘功能。...分享给大家供大家参考,具体如下: Android开发中,手动调用软件盘的隐藏和显示有时候也是非常常见的需求。 EditText控件实现了点击打开软键盘输入功能,but why ?...为什么EditText可以点击弹出keyboard,而TextView却不可以,EditText继承TextView做了哪些修改呢?...开发有个布局是最外层是FrameLayout,包裹了ListView,bottom底部是个edit输入框,当点输入框打开keyboard时候,需要下滑listView隐藏keyboard,但滑继续滑动...(PS:之前也纠结过这个问题,adjustResize属性导致底部的Edit没有跟着keyboard移动,而是等keyboard打开Editlayout到合适的位置了。

1.1K20

一对一直播源码开发,表情面板无缝切换的实现

一对一直播源码使用过程中,有时会出现软键盘切换闪屏问题,就是当切换表情的时候屏幕会跳动,因此要对一对一直播源码表情面板无缝切换进行优化。.../res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/airPanelSubLayout..." android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop...>AirPanelLinearLayout 这里给出这个fragment的相关逻辑实现(当然这个逻辑和软键盘没有任何关系了,只是负责控制哪个面板的显示和隐藏,因为所有的关于软键盘的控制都已经被AirPanelLinearLayout...--注意一点,根布局使用的是AirPanelLinearLayout--> 好了,看下如何在

49620
领券