android软键盘挡住输入框问题解决方法
教你在EditText中关闭软键盘
1、EditText有焦点(focusable为true)阻止输入法弹出
Java代码 editText=(EditText)findViewById(R.id.txtBody);
editText.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘
return false;
}
});
2、当EidtText无焦点(focusable=false)时阻止输入法弹出
Java代码 InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
1.调用显示系统默认的输入法
方法一、
Java代码 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(m_receiverView(接受软键盘输入的视图(View)),InputMethodManager.SHOW_FORCED(提供当前操作的标记,SHOW_FORCED表示强制显示));
方法二、
Java代码 InputMethodManager m=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); (这个方法可以实现输入法在窗口上切换显示,如果输入法在窗口上已经显示,则隐藏,如果隐藏,则显示输入法到窗口上)
2.调用隐藏系统默认的输入法
Java代码 ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); (WidgetSearchActivity是当前的Activity)
3.获取输入法打开的状态
Java代码 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen=imm.isActive();
isOpen若返回true,则表示输入法打开
另外
参数 含义
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN
软键盘直接覆盖Activity,通常这是默认值
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
Activity高度会变化,让出软键盘的空间。和WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN 为2选1的值
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
Activity一打开就直接显示软键盘窗口,如果该窗口需要的话(即有EditText,或有ditable的控件)
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN
Activity打开后并不直接显示软键盘窗口,直到用户自己touch文本框。
大家在布局时候,有时候会发现输入框被挡住一部分,能完全显示出来,但是系统自带短信界面
可以完全漂浮在软键盘之上,看了一下短信源码,修改一下输入模式就可以了,源码如下
代码方式:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
也可以简单点:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
xml方式:
<activity android:name=".Activity.FilterActivity" android:label="@string/app_name" android:windowSoftInputMode="stateHidden" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation"
/>
下面做个详细的介绍:
软输入法模式选项:
public int softInputMode;
以下选项与输入法模式有关:
软输入区域是否可见。
public static final int SOFT_INPUT_MASK_STATE = 0x0f;
未指定状态。
public static final int SOFT_INPUT_STATE_UNSPECIFIED = 0;
不要修改软输入法区域的状态。
public static final int SOFT_INPUT_STATE_UNCHANGED = 1;
隐藏输入法区域(当用户进入窗口时)。
public static final int SOFT_INPUT_STATE_HIDDEN = 2;
当窗口获得焦点时,隐藏输入法区域。
public static final int SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3;
显示输入法区域(当用户进入窗口时)。
public static final int SOFT_INPUT_STATE_VISIBLE = 4;
当窗口获得焦点时,显示输入法区域。
public static final int SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5;
窗口应当主动调整,以适应软输入窗口。
public static final int SOFT_INPUT_MASK_ADJUST = 0xf0;
未指定状态,系统将根据窗口内容尝试选择一个输入法样式。
public static final int SOFT_INPUT_ADJUST_UNSPECIFIED = 0x00;
当输入法显示时,允许窗口重新计算尺寸,使内容不被输入法所覆盖。
不可与SOFT_INPUT_ADJUSP_PAN混合使用;如果两个都没有设置,系统将根据窗口内容自动设置一个选项。
public static final int SOFT_INPUT_ADJUST_RESIZE = 0x10;
输入法显示时平移窗口。它不需要处理尺寸变化,框架能够移动窗口以确保输入焦点可见。
不可与SOFT_INPUT_ADJUST_RESIZE混合使用;如果两个都没有设置,系统将根据窗口内容自动设置一个选项。
public static final int SOFT_INPUT_ADJUST_PAN = 0x20;
当用户转至此窗口时,由系统自动设置,所以你不要设置它。
当窗口显示之后该标志自动清除。
public static final int SOFT_INPUT_IS_FORWARD_NAVIGATION = 0x100;
android软键盘挡住输入框问题解决方法相关推荐
- android h5输入框被键盘遮挡,h5软键盘挡住输入框问题解决(android)
问题 如图一个表单: 在部分android机型上测试点击靠下的输入框时遇到弹出的软键盘挡住输入框问题,ios可自身弹起(ios自身的调整偶尔也会出问题,例如第三方键盘会遮挡,原因是第三方输入法的too ...
- 5种方法完美解决android软键盘挡住输入框方法详解
版权声明:本文为CSDN博主「潇潇凤儿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/smileiam/ ...
- Android软键盘挡住输入框,设置adjustResize还无效,解决方案
* adjustPan是把整个界面向上平移,使输入框露出,不会改变界面的布局: * adjustResize则是重新计算弹出软键盘之后的界面大小,相当于是用更少的界面区域去显示内容,输入框一般自然也就 ...
- 完美解决android软键盘挡住输入框方法,还不顶标题栏
非透明状态栏下使用adjustResize和adjustPan,或是透明状态栏下使用fitsSystemWindows=true属性 在AndroidManifest.xml对应的Activity里添 ...
- Android软键盘挡住输入框
今天产品突然过来说APP登录界面软键盘遮挡了editText的输入框体验不好,确实是,那就开始操作: 在网上一查,打多数都是这样写的: 第一种 1 2 3 4 5 <activity andro ...
- android 键盘遮盖输入框_Android软键盘挡住输入框的终极解决方案
前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 最基本的情况,如图所示:在页面底部有一 ...
- Android爬坑之旅:软键盘挡住输入框问题的终极解决方式
本文由BarryZhang原创,同一时候首发于diycode.cc.barryzhang.com .github.com/barryhappy.非商业转载请注明作者和原文链接. 前言 开发做得久了.总 ...
- Android爬坑之旅:软键盘挡住输入框问题的终极解决方案
前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页 ...
- 软键盘挡住输入框问题的终极解决方案
作者:腾儿飞 链接:https://www.jianshu.com/p/306482e17080 来源:简书 前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输 ...
- android 键盘遮盖输入框_Android各种键盘挡住输入框解决办法
原标题:Android各种键盘挡住输入框解决办法 今日科技快讯 C919大型客机首飞成功,让很多人激动不已.然而近日网上也出现了一些不同的声音:说这架飞机许多部件都是进口货,甚至有人说C919中国人只 ...
最新文章
- linux svn安装和配置
- 会声会影如何渲染高清视频
- 拒绝卡顿,揭秘盒马鲜生 Android 短视频秒播优化方案
- mysql setinc_数据库自增自减——setInc、setDec
- JS DOM节点增删改查 属性设置
- [动画工具] Animations
- Postgres 数据库大批量单表导入数据引发性能故障的处理
- Win10系统如何共享文件夹,教你怎么操作
- python中pip有啥用_python的pip有什么用
- 学单片机有什么用?单片机自学网有哪些?
- html老师祝福语,教师节给老师的温馨祝福语
- MATLAB超定方程解法
- 僵尸网络研究报告(2016)
- 如何用iMazing软件将苹果手机数据备份及功能详解
- 查看linux服务器存储空间状况
- 倍福plc的型号_EL9186——plc倍福模块+EL9100型号EL9010
- TensorFlow CRNN
- html单引号,双引号转义
- #175-【线段树与树状数组】砍树
- 链路追踪(Tracing)的前世今生(上)
热门文章
- xadmin获取mysql_Django2集成xadmin详解-5-获取登录用户信息并填充相应Model字段
- mysql按条件提取数据库_UIPath中级系列一之读取MySQL记录集
- 计算机专业基础 -- 网络相关AJAX基础知识
- ZIP压缩输入/输出流
- 使用 ESLint 禁止项目导入特定模块
- PHP7通过yum源安装及性能测试
- PHP面试常考内容之面向对象(3) 1
- python3之线程
- IT书籍汇总下载(python_c++_java_android_网络安全)等-持续更新
- Struts2体系介绍