Android软键盘遮挡布局问题;
布局被软键盘遮挡虽然不是什么大问题,但还是比较影响用户体验的;最让人恼火的是当前输入框被软键盘被遮挡,来看一下解决方法;
1、当前输入框被软键盘遮挡,仅把输入框显示出来,不改变整体布局;
设置Manifest:
android:windowSoftInputMode="adjustPan"
代码设置:要在setContentView之前
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
2、如果需求这样告诉你,输入框下面的登录按钮也要显示出来;那么用第一种方式就不行了;
这个是测试给提出的BUG:说在左边的这个手机 登录按钮、忘记密码、账号注册,这几个地方被软键盘遮挡了;右边的手机显示正常;
我回复他:你手机屏幕小,我能有什么办法;
然后需求告诉我:兼容性问题,开发请修改;
无奈```开始修改吧!
我的思路是这样的:1、这个登录界面的最外层布局使用ScrollView,因为它可以上下滚动;
2、如果输入框EditText被触摸或焦点发生变化,这时软键盘会弹出,键盘弹出后改变ScrollView的位置,让其显示最下面;
代码如下:
etMobile.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
initlist();
}
});
etMobile.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
initlist();
return false;
}
});
etCodePassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
initlist();
}
});
etCodePassword.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
initlist();
return false;
}
});
private void initlist() {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
sc.postDelayed(new Runnable() {
@Override
public void run() {
sc.smoothScrollTo(0,sc.getHeight());
}
}, 300);
}
效果图如下:
但是,如果这个界面是全屏显示,沉浸式的话,ScrollView改变位置就不能使用了;
3、改变布局,让登录按钮显示出来;
大致思路:监听软键盘是否显示,如果软键盘显示,就把输入框以上的布局隐藏GONE了;
代码实现:(监听界面发生改变的使用最外层的布局)
//监听界面是否发生改变(如果发生改变我们我认为软键盘有变化)
sc.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
sc.postDelayed(new Runnable() {
@Override
public void run() {
//判断现在软键盘的开关状态
if(SoftKeyboardUtils.isSoftShowing(LoginActivity.this)){
rl.setVisibility(View.GONE);
StatusBarCompat.setLightStatusBarColor(LoginActivity.this); //关闭沉浸式
}else{
rl.setVisibility(View.VISIBLE);
StatusBarCompat.translucentStatusBar(LoginActivity.this, true); //开启沉浸式
}
}
},100L);
}
});
SoftKeyboardUtils是我抽取监听软键盘的工具类:https://blog.csdn.net/qq_35605213/article/details/80763863
效果如下:(可以做一个隐藏的动画,效果会好一点)
Android软键盘遮挡布局问题;的更多相关文章
- Android软键盘遮挡布局的那些事
有朋友提到软键盘遮挡布局的问题,说网上找了很多资料都未能解决,下面我来总结一下那些事,有些内容也是从网友那里学来的,但是我都会自己验证正确了才会贴出来. 首先来分析下我们常见的遮挡问题有哪些(本次所说 ...
- Android软键盘遮挡的四种解决方案
问题概述 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入 ...
- 关于Android软键盘把布局顶上去的问题(一)
最近接触到了一个登陆页面,布局最上面显示的是一个波纹的view,中间显示账号和密码的EditText,紧接着还有一个Button: 希望:点击EditText时,软键盘不能把波纹的view顶出去,也不 ...
- 关于Android软键盘把布局顶上去的问题
首先说下我的需求:布局最上面是一个bar,有左上角返回按钮和标题,bar下面是一个ScrollView,里面有各种TextView和EditText, 点击下面的EditText时,不希望软键盘把ba ...
- Android软键盘弹出,覆盖h5页面输入框问题
之前我们在使用vue进行 h5 表单录入的过程中,遇到了Android软键盘弹出,覆盖 h5页面 输入框 问题,在此进行回顾并分享给大家: 系统:Android 条件:当输入框在可视区底部或者偏下的位 ...
- Android软键盘的隐藏显示、事件监听的代码
把开发过程中重要的一些内容片段做个珍藏,如下资料是关于Android软键盘的隐藏显示.事件监听的内容,应该是对小伙伴们有所用途. public class ResizeLayout extends L ...
- Android 软键盘弹出,界面整体上移
在做搜索功能的时候,点击搜索框,搜索框获取焦点,键盘弹出:现在问题出来了,android软键盘弹出的时候,android整个界面上移,布局被挤压,很难看:要解决这个问题,我们需要用到 windowSo ...
- Android 软键盘监听事件
Android软键盘的隐藏显示研究 Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入. 那么,弹出软键盘后必然会造成原有布局高度的减少 ...
- 完美解决android软键盘监听
最近在做应用性能调优,发现在一个包含有输入框的Activity中,当软键盘弹出的时候,如果直接finish掉此Activity,那么在返回到上一个Activity时,界面的渲染会由于软键盘没有及时的收 ...
随机推荐
- windows下尝试编写node模块
1,首先参考http://www.cnblogs.com/yupeng/p/3469444.html写了一个模块 2,按照指引运行 F:\Program Files\nodejs\mymodule&g ...
- mysql之 sysbench1.0.3 安装与系统压力测试
针对系统和数据库压测是项目上线前必做的一项,这里使用的是最新版本的sysbench做的压测使用详解.sysbench可以做系统层面的压力测试(CPU.内存.硬盘IO.互斥锁.Thead),也可以做数据 ...
- 利用django如何解析用户上传的excel文件
https://www.jb51.net/article/119452.htm 前言 我们在工作中的时候,会有这种需求:用户上传一个格式固定excel表格到网站上,然后程序负债解析内容并进行处理.我最 ...
- struts2+dojo实现datagrid
ACTION: package test.action; import java.util.ArrayList; import java.util.HashMap; import java.util. ...
- Zookeeper 四字命令 Four Letter Words
1.zk可以通过它自身提供的简写命令来服务器进行交互 需要使用到nc命令,安装yum install nc echo [commond] | nc [ip] [port] 2.[stat] 查看z ...
- Spark基本术语表+基本架构+基本提交运行模式
一.Spark基本术语表 转载自:http://blog.csdn.net/simple_the_best/article/details/70843756 以下内容来自 http://spark.a ...
- elasticsearch UNASSIGNED 处理
PUT /_settings HTTP/1.1 Host: 192.168.1.12:9200 Cache-Control: no-cache Postman-Token: 1befb0fb-6492 ...
- 排序算法<No.4>【基数排序】
由于春节,以及项目要上线的原因,导致这期的算法博文跟进的有点慢,内疚! 今天要介绍的是排序算法中的基数排序(Radix Sort),这类排序也是一个分而治之的排序,是对桶排序的一个升级和改造,也是稳定 ...
- PI Square中文论坛: PI SDK 开发中级篇| PI Square
注: 为了更好的利用站内资源营造一个更好的中文开发资源空间,本文为转发修正帖,原作者为OSIsoft技术工程师王曦(Xi Wang),原帖地址:PI SDK 中级篇 来源:https://d.gg36 ...
- vue-clil的快速搭建vue项目
1.npm i vue-cli -g 全局安装 2.vue init webpack myProject 3.cd myProject 4.npm i 稍等片刻 完成运行下一步 5.npm run d ...