在最近的项目需求中,交互发现在许多页面中,当软键盘弹出后会遮挡部分页面,一方面使布局看起来不太美观,另一方面是如果将按钮,输入框等挡住后,用户必须先点返回键后才能继续进行操作,也是一种不合理,于是开始着手改造这些页面的交互问题.

 下面就以项目中的登陆页面为例说明,先看未输入时的效果图:

 

软键盘弹出时的效果图如下:

可以看到,当软键盘弹出时,将其遮挡的布局全部弹了起来,下面是实现的代码:

package com.micen.buyers.view.util;import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import android.widget.ScrollView;import com.micen.buyers.activity.R;public class ScrollLinearLayout extends LinearLayout
{private ScrollView scrollView;private LinearLayout content;private Handler handler = new Handler();public ScrollLinearLayout(Context context, AttributeSet attrs){super(context, attrs);initView(context);}private void initView(Context context){content = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.scroll_linear_layout, null);scrollView = (ScrollView) content.findViewById(R.id.scrollview);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);addView(content, params);}//主要是重写此方法,让布局中的ScrollView弹到底protected void onSizeChanged(int w, final int h, int oldw, final int oldh){handler.post(new Runnable(){@Overridepublic void run(){int off = oldh - h;if (off > 0){scrollView.scrollTo(0, off);}}});}}

思路: 就是弹出软键盘时,将最外层布局的ScrollView弹到最底部即可,在网上看到有一些方法,使用Handler的postHandler方法延时几百毫秒去滑动ScrollViewm,自己也尝试过这种方法,其有两点不好,1.会出现偶尔不会弹起的情况,也就是postHandler的滑动方法没有执行,还没找到原因,2.如果页面中有多个输入框的话,例如上图登陆中的两个框的话,弹起时会出现焦点乱跑的情况.正是由于有这两个偶发事件(小米小手上的确会出现),才换路使用这种方法,在小米,三星,华为上都不会出现上述bug,大家可以参考.

android控制软键盘显示与隐藏相关推荐

  1. android 软键盘显示和隐藏造成页面跳闪问题的解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 一.分析问题 1.为什么会闪? 首先图像切换主要用的无非就是ViewA.setVisibility(GONE) 和 ViewB ...

  2. Android:软键盘

    软键盘显示 1.WindowSoftInputMode九种状态(6+3) (控制软键盘显示还是隐藏) stateUnspecified:默认状态.不指定软键盘显示还是隐藏,将由系统选择合适的状态. s ...

  3. 简单可用 Android 安卓软键盘弹出、隐藏监听方法回调

    工具类 import android.app.Activity import android.graphics.Rect import android.view.ViewTreeObservercla ...

  4. android 输入法 确定按钮,Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究...

    在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听 ...

  5. Android中根据dialog的展示与否控制软键盘的显示与隐藏

    好久没有写博客,今天一直在解决一个根据弹框的展示与否来控制软键盘是否展示的问题. 本文用于记录关键点. 关键点:1.该弹框包含一个输入框Edittext ,所以需要根据确定与取消按钮来控制软件盘的展示 ...

  6. Android 软键盘显示隐藏判断

    Android软键盘始终感觉是个BUG,难缠 用起来不顺手,每次应用版本涉及到相关问题,总是很尴尬 只能静下心好好梳理一下 1. 软键盘显示原理 软键盘的本质是什么?软键盘其实是一个Dialog In ...

  7. android inputmethodmanager 不自动弹出,Android中软键盘InputMethodManager的弹出和隐藏,以及显示和隐藏的监听...

    1.首先设置软键盘的弹出模式,设置在初始化View的前面 @Override protected void onCreate(Bundle savedInstanceState) { this.req ...

  8. Android软键盘调用及隐藏,以及获得点击软键盘输入的字母信息

    在Android提供的EditText中单击的时候,会自动的弹出软键盘,其实对于软键盘的控制我们可以通过InputMethodManager这个类来实现.我们需要控制软键盘的方式就是两种一个是像Edi ...

  9. android 键盘 自动消失,android 键盘状态,获取键盘显示和隐藏

    要设置弹出键盘是否覆盖Activity的view,或者软键盘的显示隐藏状态,需要用到Activity的一个属性: android:windowSoftInputMode 该属性在AndroidMani ...

  10. Android键盘显示和隐藏

    一.不自动弹出键盘: 带有EditText控件的在第一次显示的时候会自动获得focus,并弹出键盘,如果不想自动弹出键盘,有两种方法: 方法一:在mainfest文件中把对应的activity设置 a ...

最新文章

  1. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
  2. java中的反射(一)
  3. 在ASP.NET页面中实现数据柱状图
  4. char类型和Unicode编码
  5. 关于绑定了GridView控件后怎么截取字符串和CSS样式来控制表头不换行
  6. 传感器系列之4.3流量传感器
  7. ROS笔记(17) Gazebo
  8. tar:归档中找不到 tar: 由于前次错误,将以上次的错误状态退出
  9. GitHub的实现是否是基于此语言的支持网络编程性呢?
  10. sqlserver提权失败_利用mssql模拟登录提权
  11. Excel精度问题。
  12. 在Chrome谷歌浏览器中使用H5地理位置API
  13. 探索 Sa-Token (三) 权限认证原理
  14. OpenCV4 快速入门 (学习笔记 全)
  15. colorfly i108w 平板电脑装ubuntu系统过程与踩坑总结
  16. liunx oracle 12505,ORA-12505 错误解决
  17. 队残冒逃茸霞桥镭砸的
  18. 中兴通讯智能手机生产链探秘
  19. 最长回文子串问题求解
  20. 磁感应强度B和磁极化强度J

热门文章

  1. Javascript:js借助jQuery和fileSave将表格存储到world
  2. remmima 不能保存_不再使用RememBear密码管理器忘记密码
  3. Guava学习笔记(二):Optional优雅的使用null
  4. 最快的Java序列化框架Protostuff简介
  5. Dedecms修改TAG、title、keywords及栏目名称长度限制
  6. 三维重建笔记_光束平差法(Bundle Adjustment, BA)
  7. redhat6 本地 yum源配置方法
  8. FileOutputStream输出流
  9. php整理(二): 数组
  10. HDU Today--hdu2112