Android InputMethodManager进入页面后自动弹出软键盘

博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
👉点击跳转到网站

一、第一种方法,进入带有输入框的页面, 让输入框自动显示软键盘

		 //输入框,获取焦点 不然无法弹出键盘
        et_english.requestFocus();
        //键盘输入法管理器
        InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(et_english, 0);

二、第二种设置方法

首先在AndroidManifest.xml中找到输入框,对应的Activity类
设置android:windowSoftInputMode 属性

		<activity
            android:name=".InputMethodActivity"
            android:windowSoftInputMode="stateVisible" />

之后在InputMethodActivity类中给输入框EditText设置获取焦点

//请求焦点
editText.requestFocus();

三、退出这个页面后,如果不做处理的话,软键盘还在,所以需要在对应的界面对软键盘做隐藏处理,我这里是在Fragment的onResume()方法中,隐藏软键盘,就是每次进入该页面时,键盘还在就隐藏键盘。

InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);

备注:这里的requireActivity是获取Fragment中的上下文对象,在Activity里面写的话自然使用this

注意: 软键盘弹出后,默认会自动压缩View,把View往上推,如果不需要这个行为,需要在AndroidManifest.xml中对应的Activity标签中,加入android:windowSoftInputMode="adjustNothing" 不做任何调整,这样就不会自动收缩我们的页面了。但是这个输入框靠近屏幕底部的话,就不适用了,软键盘会覆盖输入框。

可以换成这个属性,如果软键盘会覆盖输入框,系统会自动将页面向上提,从而能显示输入框。

android:windowSoftInputMode="stateHidden|adjustPan"

adjustPan 的含义:当前窗口的内容将自动移动,以便当前焦点从不被键盘覆盖,和用户能总是看到输入内容的部分
stateHidden含义:当用户进入Activity后保证是隐藏软键盘的,但是如果是从另一个页面返回该页面就不能保证了。比如说用户进入A页面,然后在输入框输入内容,未收起软键盘直接进入B页面,再从B页面返回A页面,此时A页面中软键盘还是显示的。又或者是用户由A页面进入B页面,在B页面弹出软键盘,未收起直接返回A页面,此时A页面中软键盘还是显示的。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值