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

在android中子碎片的edittext中移除焦点后,软键盘不会消失

在Android中,当子碎片(子Fragment)中的EditText失去焦点后,软键盘通常不会自动消失。这是因为焦点的变化并不会直接触发软键盘的隐藏。

要解决这个问题,可以通过以下几种方法之一:

  1. 在失去焦点的时候手动隐藏软键盘:可以在子碎片的EditText失去焦点的回调方法中,手动隐藏软键盘。可以使用InputMethodManager类的hideSoftInputFromWindow方法来实现。具体代码如下:
代码语言:txt
复制
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
  1. 在父碎片(父Fragment)中处理焦点变化:如果子碎片是嵌套在父碎片中的,可以在父碎片中监听焦点的变化,并在焦点变化时隐藏软键盘。可以通过重写父碎片的onViewCreated方法,并添加以下代码来实现:
代码语言:txt
复制
View view = getView();
if (view != null) {
    view.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
            return false;
        }
    });
}
  1. 使用全局的焦点变化监听器:可以在Activity中注册一个全局的焦点变化监听器,监听所有EditText的焦点变化,并在失去焦点时隐藏软键盘。可以通过重写Activity的dispatchTouchEvent方法来实现。具体代码如下:
代码语言:txt
复制
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
        View view = getCurrentFocus();
        if (view instanceof EditText) {
            Rect outRect = new Rect();
            view.getGlobalVisibleRect(outRect);
            if (!outRect.contains((int) ev.getRawX(), (int) ev.getRawY())) {
                view.clearFocus();
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }
    }
    return super.dispatchTouchEvent(ev);
}

以上是几种常见的解决方法,根据具体的场景和需求选择适合的方法即可。

关于Android中子碎片的概念、优势、应用场景以及推荐的腾讯云相关产品和产品介绍链接地址,暂时没有直接相关的内容。

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

相关·内容

Android富文本开发

压缩图片大小应该和用来展示它控件大小相近,一个很小ImageView上显示一张超大图片不会带来任何视觉上好处,但却会占用相当多宝贵内存,而且性能上还可能会带来负面影响。...如何运用到插入或者删除图片场景 向一个ViewGroup添加控件或者移除控件,这两种效果过程是应对应于控件显示、控件添加时其他控件位置移动、控件消失、控件移除时其他控件位置移动等四种动画效果...,其他输入框也不获取焦点,ps非直接父布局没有效果) android:windowSoftInputMode="stateAlwaysHidden" (效果:软键盘不弹出,光标显示第一个输入框) 需求...2:editText不获取焦点,当然软键盘不会主动弹出(光标也不显示) 第一个输入框最直接父布局加入:android:focusable="true";android:focusableInTouchMode...="true" (效果:软键盘不弹出,光标不显示,其他输入框也不获取焦点,ps非直接父布局没有效果) 父布局最顶部添加一个高度为0EditText,抢了焦点但不展示; 软键盘遮挡界面的问题 当界面中有输入框

8.4K20

Android开发常用知识点

如果用户旋转设备这屏幕会横竖屏切换 nosensor–忽略物理感应器,这样就不会随着用户旋转设备而更改了(”unspecified”设置除外) 移除 View 背景色 setBackgroundResource...EditText控件找一个,设置成 android:focusable="true" android:focusableInTouchMode="true" 软键盘不遮挡 解决Android软键盘在全屏下设置...="actionNext" android:nextFocusForward="@+id/userpwd_edittext" //密码输完焦点放到登录按钮上 android:imeOptions=...stateAlwaysHidden 当该Activity主窗口获取焦点时,软键盘总是被隐藏,不管是确认导航到该Activity还是Activity被覆盖显示出来。...stateAlwaysVisible 当该Activity主窗口获取焦点时,软键盘总是显示,不管是确认导航到该Activity还是Activity被覆盖显示出来。

2.5K10

EditText 集锦 - 开发中常用用法及遇到各种坑

(居左显示),viewEnd(居右显示),textStart(居左显示),textEnd(居右显示).这里需要注意是最低支持API版本是17,前两个可以API14使用,而后面使用就会报红线… android...@null"设置背景为透明.当我们设置背景,EditText那条线就会消失. android:textAppearance //设置文本颜色,字体,大小和样式. android:digits //...默认获取焦点 EditText 默认获取焦点,并弹出键盘,这本来是默认行为。...这时候,可以采用下面的方法 /** * EditText获取焦点并显示软键盘 */ public static void showSoftInputFromWindow(Activity..., 0); } 取消 EditText 默认获取焦点行为 EditText父级控件找一个,添加这两个属性: android:focusable="true" android:focusableInTouchMode

2.2K20

Android UI开发中所遇到各种坑

1.软键盘隐藏问题 问题描述:Activity按下返回调用finish()方法,界面已经销毁,但是软键盘依然还留在屏幕上,这让当前正在显示Activity没有输入框完全没法看,非常严重视觉影响。...还尝试过用基类找到所有edittext然后让它们失去焦点,隐藏软键盘。...()里调隐藏软键盘思路就是错,因为onDestroy()之前还有两个生命周期方法,像上述隐藏软键盘方法有个getCurrentFocus(),onDestroy()之前肯定得不到正确获取当前焦点那个控件了...merge标签使用后,布局里即使有EditText也无法自动获得焦点,只能手动设置焦点, 调用requestFocus()方法。或者是用requestFocus》XML布局文件里。...使用后要注意如果在根布局,则不能用LayoutInflater来生成一个view,否则会报如下错误,由于我listviewgetview()里用了这个带有merge布局,所以崩溃了。

1.3K20

Android开发软键盘显示和隐藏

而很多关键逻辑代码,都是 InputMethodManagerService 实现。 特别说明:本文所有分析源码,都是基于 Android 26 源码。...而这不是绝对,如果不是一个 EditText ,就必须要求这个 View 有两个属性,分别是:android:focusable="true" 和android:focusableInTouchMode...2、第一个参数,必须是可获取焦点,并且当前已经获取到焦点EditText 默认是允许获取焦点,但是假如布局,存在多个可获取焦点控件,就需要提前让我们传递进去 View 获取到焦点。...获取焦点可以使用 requestFocus() 方法。 3、布局必须加载完成。 onCreate() ,如果立即调用 showSoftInput() 是不会生效。...这就导致很多时候,我们代码,无法直接根据 InputMethodManager 提供方法判断当前软键盘显示状态,这样也就无法确定调用它时候效果了。

2.4K10

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

3、系统软键盘会自动响应EditText焦点变更事件,常常在意料之外突然之间蹦出来,弄得开发者要么剥夺EditText焦点,要么强行关闭软键盘显示,但无论哪种方式都得开发者强行**,很不方便。...那么这个软键盘又是如何实现呢?其实它跟平常自定义控件基本类似,只细节上有所差异,下面分步说明自定义软键盘过程。...软键盘采取一种方式,只不过它布局文件不是放在res/layout目录,而是保存在res/xml目录。...2、自定义控件主要工作是书写自定义控件类,自定义软键盘也不例外,有了自定义控件类,才能处理十个数字键按键动作,才能把软键盘做为普通控件嵌入到其它布局文件。...3、软键盘不是一个孤立控件,它按键动作需要实时某个编辑框把数字显示出来,所以使用时还得给它绑定一个EditText,这样软键盘才知道我按键要输出给这个EditText,而不是输出给那个EditText

2.4K30

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

1、需求分析 众所周知,应用这样那样评论总是少不了,有的应用是底部直接加一个EditText和一个Button,让用户输入文字或者表情之后点击按钮提交;而有的虽然也放置了EditText,但仅仅是一个...这里效果可以细分为四点: 点击底部按钮之后会弹出对话框,对话框在布局底部; 对话框中有输入框EditText,可以输入内容; 对话框弹出EditText会自动获取焦点,弹出软键盘软键盘会把对话框顶上去...下面介绍两种方法: 3.1、使用InputMethodManager类显示软键盘 我们平时要让某个EditText获得焦点自动弹出软键盘可以这样写: InputMethodManager inputManager...获得焦点,那必须等界面绘制完毕才行。...5、参考文章 android:windowSoftInputMode属性详解 彻底搞定Android开发软键盘常见问题

2.7K20

实现Android键盘中英文适配

大家进行Android项目开发时候经常会遇到中文输入和英文输入切换情况,本篇内容教给大家实现Android下自动识别中英文键盘功能。...sp_14"/ 重点是 android:digits=”1234567890″ EditTextandroid:digits属性作用 是设置允许输入哪些字符。...获得焦点,会弹出数字输入法模拟键盘 请在xml设置inputType属性即可 1、API中有,列举出来inputType值都包括哪些。...android:inputType=”date” 日期键盘 android:inputType=”time” 时间键盘 2、Enter键图标的设置 想象一下,当我们EditText完成了输入,想要以输入内容作为关键字进行搜索时..." / </intent-filter </activity 方法二: 让EditText失去焦点,使用EditTextclearFocus方法 例如: EditText edit=(EditText

2.1K10

Android EditText软键盘搜索

一个很常见小功能,输入信息以后,点击软键盘回车键可以执行相关操作,比如搜索,输入关键词之后,点击软键盘搜索按钮(回车键)就可以执行搜索操作。...1.EditText <EditText android:id="@+id/et_search_content" android:layout_width="match_parent"...:textSize="@dimen/sp_14"/> android:imeOptions="actionSearch" 主要是这个属性,就是把软键盘回车键改成搜索按钮 相关属性值还有 2.监听按钮事件...//do something //doSearch(); ToastUtil.showToast("点击了软键盘搜索按钮...继承TextView,所以这个事件是TextView 更多关于EditText设置:EditText默认不获取焦点,隐藏软键盘焦点监听,输入监听,样式设置

1.5K20

Android EditText使用详解-包含很多教程上看不到功能演示

EditText是TextView子类,所以TextView方法和特性同样存在于EditText,具体TextView介绍可以参考上一节Android TextView小组件使用–附带超链接和跑马灯效果...EditText为我们提供了android:hint来设置当EditText内容为空时显示文本,这个文本只EditText为空时显示,你输入字符时候就消失了,不影响你EditText文本。。...还有一个比较实用功能,就是设置EditText不可编辑。设置android:enabled=“false”可以实现不可编辑,可以获得焦点。...Android没有专门文本域组件,但是可以通过设置EditText高来实现同样文本域功能。修改main.xml如下: <?...比如,一个搜索,我们输入要搜索文本,然后按Enter表示要去搜索了,但是默认Enter键显示是“完成”文本,看着不太合适,不符合搜索语义,如果能显示“搜索”两个字或者显示一个表示搜索图标多好

3.7K20

自定义键盘(二)

"复制代码 让系统键盘不弹出来 3.3动态绑定输入框 系统输入框是当EditText获取焦点时候会弹出来,所以这里我们要给传递进来EditText设置焦点改变监听,通过焦点改变来显示键盘。...仍然获取焦点,再次点击这个EditText,键盘并未弹出。...因为焦点没有改变。这就需要我们我们传递过来布局文件添加一个宽高是0EditText。让用户点击完成时候,这个EditText获取焦点。...模式是输入英文字母 android:inputType="number" 复制代码 4.3点击非键盘和焦点区域,让键盘消失 重写activity方法,然后调用隐藏键盘方法 @Override public...savedInstanceState) { View view = inflater.inflate(R.layout.frag_home_tab, container, false); //点击空白区域系统软键盘消失

92420

Android开发笔记(三十六)展示类控件

3、代码设置某控件为可见或不可见或消失,此时需要使用View类三个变量,分别是View.VISIBLE、View.INVISIBLE和View.GONE。...EditText EditText是文本输入框,与输入有关属性说明如下: XML布局文件中指定: inputType : 指定输入文本类型。...代码设置: setInputType : 设置输入文本类型。...该功能有两种实现方式: 方式一:布局文件EditText节点中加入singleLine属性,但该方式只视觉上起作用,真正字符串还是带有回车换行符; android:singleLine="true...EditText还有一个需要特殊处理地方,就是自动关闭软键盘。一般我们希望点击其它控件时,原输入框软键盘就要自动消失,可惜Android不是这样处理。

1.4K30

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

实现 方法二:通过单元测试实现 4.EditText软键盘调起、关闭 5.禁止EditText自动弹出软键盘 6.EditText输入文本从右边开始显示 7.判断APP是否联网 8.检查网络连接状态变化无网络时跳转到设置界面...添加jar包方法 先到网上下载你需要jar包,下载下来,将你Androidstudio项目切换为project,找到app下libs,将你下载jar包复制粘贴进去 ?...4.EditText软键盘调起、关闭 (1)EditText焦点(focusable为true)阻止输入法弹出 editText.setOnTouchListener(new OnTouchListener...android:focusable="false"// 键盘永不弹出 5.禁止EditText自动弹出软键盘 (1)包含EditText父布局添加android:focusable="true"...输入文本从右边开始显示 进行计算器等开发时候,常常需要在EditText控件输入文本从右边开始显示: xml文件中加入android:gravity="right"或者android:gravity

1.3K20

android实现搜索功能并将搜索结果保存到SQLite(实例代码)

涉及要点: ListView+EditText+ScrollView实现搜索效果显示 监听软键盘回车执行搜索 使用TextWatcher( )实时筛选 将搜索内容存储到SQLite(可清空历史记录)...监听EditText焦点,获得焦点弹出软键盘同时显示搜索历史,失去焦点隐藏软件盘和ListView。...v) { deleteData(); queryData(""); } }); et_search.setOnKeyListener(new View.OnKeyListener() {// 输入完按键盘上搜索键...hideSoftInputFromWindow( getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); // 按完搜索键将当前查询关键字保存起来...</ScrollView </LinearLayout 完整代码下载 demo 到此这篇关于android实现搜索功能并将搜索结果保存到SQLite(实例代码)文章就介绍到这了,更多相关android

93830

Android View 完美实现EditText 软键盘上边示例

此方法基于PopupWindow,适合需要回复内容时响应点击事件,打开软键盘,编辑框在软键盘上部。 优点,编辑框使用CleanEdittext,监听输入状态来更改回复按钮颜色,添加title等。...先展示效果 点击评论打开软键盘,编辑框在软键盘上部,点击其他区域消失收起软键盘: ? ? 1.BaseSelectPopupWindow 代码。...="65dp" android:layout_marginTop="5dp" android:background="@drawable/edittext_back" android:focusable...设置点击事件,所以我们用记住我们按下位置来模拟点击事件 * 当我们按下位置 EditText宽度 - 图标到控件右边间距 - 图标的宽度 和 * EditText宽度 - 图标到控件右边间距之间我们就算点击了图标...touchable) { this.setText(""); } } } return super.onTouchEvent(event); } /** * 当ClearEditText焦点发生变化时候

95941

Android开发实现Fragment监听返回键事件功能方法

本文实例讲述了Android开发实现Fragment监听返回键事件功能方法。...这里再来分析一下Fragment监听返回键事件具体应用。 背景 项目要求用户注册成功后进入修改个人资料页面,且不允许返回到上一个页面,资料修改完成结束当前页面,进入APP主页。...return true; } return false; } }); } 以上代码是stackoverflow.com中找到一个解决方案,但是使用时...,由于Fragment页面里可能有其他能获取焦点View(例如EditText),会导致监听失效,点击返回键会返回到上个页面。...更完善解决方案: 除了上面的代码,我们需要对可以获取焦点ViewsetOnKeyListener进行处理,这里以一个EditText为例: //private EditText nickname;

1.9K10
领券