遇到的问题

同事的项目在做登陆的时候遇到个问题,就是弹出软键盘把按钮遮挡了。网上好多方法 试了一遍效果都不好。
那么我们该如何解决这个问题呢?

解决思路

  • 弄个scrollview,让软键盘把scrollview顶上去
  • 不弄scrollview。让软键盘把 输入框顶上去,其他的图片用属性动画移走或者不显示。

效果图

用到的技术

  • 监听软键盘 开启和关闭
  • 获取控件的高度
  • 属性动画

代码实现

-监听软键盘 开启关闭代码

这个方法需要在mainfest里面加一句代码
android:windowSoftInputMode="adjustResize"package wang.com.logininputdemo;import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.RelativeLayout;/*** 一个继承自RelativeLayout的输入法监听布局** Created by zhaowei on 15/7/31.*/
public class InputMethodLayout extends RelativeLayout {private static final String TAG = "InputMethodLayout";/** 初始化状态 **/public static final byte KEYBOARD_STATE_INIT = -1;/** 隐藏状态 **/public static final byte KEYBOARD_STATE_HIDE = -2;/** 打开状态 **/public static final byte KEYBOARD_STATE_SHOW = -3;private boolean isInit;                                             // 是否为初始化状态private boolean hasKeybord;                                         // 标识是否打开了软键盘private int viewHeight;                                             // 布局高度private onKeyboardsChangeListener keyboarddsChangeListener;         // 键盘状态监听public InputMethodLayout(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public InputMethodLayout(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public InputMethodLayout(Context context) {super(context);// TODO Auto-generated constructor stub}/*** 设置软键盘状态监听** @param listener*/public void setOnkeyboarddStateListener(onKeyboardsChangeListener listener) {keyboarddsChangeListener = listener;}/*** 布局状态发生改变时,会触发onLayout*/@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {super.onLayout(changed, l, t, r, b);if (!isInit) {isInit = true;viewHeight = b;keyboardSateChange(KEYBOARD_STATE_INIT);} else {viewHeight = viewHeight < b ? b : viewHeight;}if (isInit && viewHeight > b) {hasKeybord = true;keyboardSateChange(KEYBOARD_STATE_SHOW);}if (isInit && hasKeybord && viewHeight == b) {hasKeybord = false;keyboardSateChange(KEYBOARD_STATE_HIDE);}}/*** 切换软键盘状态** @param state*            // 状态*/public void keyboardSateChange(int state) {if (keyboarddsChangeListener != null) {keyboarddsChangeListener.onKeyBoardStateChange(state);}}/*** 软键盘状态切换监听***/public interface onKeyboardsChangeListener {public void onKeyBoardStateChange(int state);}}

还有一个中方法监听 软键盘是否打开

 rl.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {//当键盘弹出隐藏的时候会 调用此方法。@Overridepublic void onGlobalLayout() {Rect r = new Rect();//获取当前界面可视部分SecondActivity.this.getWindow().getDecorView().getWindowVisibleDisplayFrame(r);//获取屏幕的高度int screenHeight = SecondActivity.this.getWindow().getDecorView().getRootView().getHeight();//此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数heightDifference = screenHeight - r.bottom;if (heightDifference > screenHeight / 3) {startAnimation();flag = true;} else {backAnimation();flag = false;}}});

这个例子的核心其实就是监听软键盘。其他的没什么了。直接取下载代码看下就明白了。

代码在我的github 欢迎start。fork
https://github.com/wanghao200906/logininputdemo/tree/master
尊重原创:http://blog.csdn.net/wanghao200906/article/details/51113461#t3

完美解决 手机软键盘遮挡问题相关推荐

  1. uniapp - [完美解决] 手机数字键盘没有小数点,当 input 输入框的 type 属性设置 number 后,手机系统的软键盘无法输入小数点和符号问题(此方案 uniapp 全端全平台适用)

    效果图 正常在uniapp项目中,用户想要输入数字或金额时,通常都会将 <input> 的 type 属性设置为 number.但是问题来了,可能在苹果IOS手机.小程序上.个别安卓机上就 ...

  2. 移动端手机软键盘遮挡输入框问题

    页面: <section class="links"><h3 class="title">联系方式</h3><div ...

  3. 5种方法完美解决android软键盘挡住输入框方法详解

    版权声明:本文为CSDN博主「潇潇凤儿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/smileiam/ ...

  4. android 控件遮盖,Android手机软键盘遮挡布局控件

    在Activity中的布局的下方有EditText获取焦点弹出软键盘的时候,如果不作处理,软键盘可能会遮挡输入框或者一些按键,这样的用户体验比较差. 这里整理了几种处理方式,可以使页面整体上移.并且提 ...

  5. 完美解决android软键盘挡住输入框方法,还不顶标题栏

    非透明状态栏下使用adjustResize和adjustPan,或是透明状态栏下使用fitsSystemWindows=true属性 在AndroidManifest.xml对应的Activity里添 ...

  6. Android 模仿QQ登录界面解决软键盘遮挡问题

    Android 软件盘弹出可能会遮挡住界面上的某些控件.当 windowSoftInputMode 为 adjustPan 时,一般不会挡住 EditText,但是假如 EditText 下面是一个登 ...

  7. js手机键盘遮挡_iphone手机微信页面软键盘遮挡input输入框解决方法

    现象描述:iphone手机微信页面,用position: fixed;定位的input或textarea输入框,在获取输入焦点时,会被弹出的输入法软键盘遮挡,导致用户无法看到输入框,效果如图: 简化测 ...

  8. js手机键盘遮挡_完美解决手机网页中输入框被输入法遮挡的问题

    之前要做一个弹出对话框,填写信息,发现在手机上看的时候,较后的输入框在填写信息时,输入框被输入法遮挡,只能盲填. 前提 1.弹出的对话框用display:fixed定位的 2.对话框大小固定 解决办法 ...

  9. android自定义键盘遮挡,Android软键盘遮挡的四种完美解决方案

    一.问题概述 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时 ...

最新文章

  1. 如何删除Struts2动作的后缀扩展名
  2. leetcode - 967. 连续差相同的数字(集合、递归、动态规划)
  3. SCI科技论文写作、投稿与发表(一)
  4. mysql查看现在使用的引擎_如何查看MySQL的当前存储引擎?
  5. image.merge图像有什么变化_图像特征工程:HOG特征描述子介绍
  6. DL_C1_week_2_2(Logistic Regression)
  7. 整数与IP地址间的转换
  8. 猪猪IDS装起来——Snort安装指南
  9. 自然语言处理(3)——形式语言与自动机
  10. Creator 3.0中摄像机调整技巧: 1.旋转:Cmd+右键 移动:空格+右键 放缩:滚轮
  11. spring事务REQUIRED REQUIRES_NEW区别
  12. vue实用echart饼图legend显示百分比
  13. 三位数除以两位数竖式计算没有余数_三位数除两位数计算题-云簿杜同学
  14. 完美解决Pycharm报错[WinError 193] %1 不是有效的 Win32 应用程序
  15. 美团、飞猪基础架构组实习经历分享
  16. http://www.bubuko.com/infodetail-2274185.html
  17. Android 11.0 进入recovery模式(等待用户选择recovery模式界面)进入自动恢复出厂设置模式
  18. rsa/ecb/pkcs1padding php,PHPJAVA RSA/ECB/PKCS1Padding 加密解密
  19. 如何解决windows系统重装之后一直下载windows10易升
  20. java 熔断器模式_微服务架构熔断器机制的概念以及常用组件类型

热门文章

  1. ubuntu18.04安装tbb library
  2. EditPlus安装Json格式化工具功能
  3. 如何实现在on ethernetPacket中自动回复NDP response消息
  4. IllegalArgumentException 异常时一个不易觉察的原因
  5. CAMP模型——估计资本成本的模型
  6. Android的16ms和垂直同步以及三重缓存
  7. Spring的动态代理原理
  8. Saiku-ui代码结构分析
  9. MySQL - binlog 图文详解
  10. 基于 Matlab的录屏软件