文章目录

  • Android EditText与软键盘
    • windowSoftInputMod 属性
      • adjustPan & adjustResize的区别
    • EditText 获取焦点 & 失去焦点
    • 软键盘工具类

Android EditText与软键盘

windowSoftInputMod 属性

软键盘状态

属性值 说明
stateUnspecified 系统默认行为。系统会根据不同场景决定键盘显示状态,如Activity中有一个EditText不会显示键盘,但使用ScrollView嵌套后,会显示键盘。
stateUnchanged 下一个界面的显示状态与当前界面保持一致。
stateHidden 初次进入界面时,隐藏键盘。
stateAlwaysHidden 无论是初次进入界面还是从其他界面导航回来,总是隐藏键盘。
stateVisible 初次进入界面时,显示键盘。
stateAlwaysVisible 无论是初次进入界面还是从其他界面导航回来,总是显示键盘。

布局变化

属性值 说明
adjustUnspecified 系统默认设置,由系统决定
adjustResize 调整界面的尺寸,从底部抬起键盘高度,顶部保持不变,中间区域可能被底部顶上的内容覆盖。
adjustPan 键盘会顶到焦点下面,window整体会向上抬起。
adjustNothing 布局没有变化,键盘覆盖在布局上面。

adjustPan & adjustResize的区别

adjustPan

adjustPan:软键盘会顶在焦点下面,window会被顶起抬升,但是DecorView和ContentView的高度没有影响。

Log.e("TAG","""adjustPan:contentIdView: ${contentIdView.height}  ${contentIdView.measuredHeight}decorView: ${decorView.height}  ${decorView.measuredHeight}
""".trimIndent())
软键盘展开:contentIdView: 2153  2153decorView: 2400  2400软键盘收起:contentIdView: 2153  2153decorView: 2400  2400

adjustResize

adjustResize:可能会调整界面尺寸,ContentView可能会缩小。

软键盘展开:contentIdView: 2153  2153decorView: 2400  2400软键盘收起:contentIdView: 1344  1344decorView: 2400  2400

EditText 获取焦点 & 失去焦点

//获取焦点
editText.isFocusable = true;
editText.isFocusableInTouchMode = true;
editText.requestFocus()//失去焦点
editText.clearFocus()

软键盘工具类

/*** 软键盘工具类*/
object KeyboardUtils {/*** 显示软键盘* 需要先 requestFocus 获取焦点,如果是在 Activity Create,那么需要延迟一段时间*/fun showKeyboard(view: View?) {if (view == null)returnval manager: InputMethodManager = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.showSoftInput(view, 0)}/*** 强制显示软键盘,页面滚动时不会收起*/fun forceShowKeyboard(view: EditText?) {if (view == null)returnval manager: InputMethodManager = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.showSoftInput(view, InputMethodManager.SHOW_FORCED)}/*** 隐藏软键盘*/fun hideKeyboard(view: View?) {if (view == null)returnval manager: InputMethodManager =view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.hideSoftInputFromWindow(view.windowToken, 0)}/*** 强制隐藏软键盘* 谨慎使用,需要判断软键盘是否开启*/fun forceHideKeyboard() {object : Thread() {override fun run() {try {val inst = Instrumentation()inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK)} catch (e: Exception) {e.printStackTrace()}}}.start()}/*** 切换软键盘*/fun toggleSoftInput(view: View?) {if (view == null)returnval manager: InputMethodManager = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagermanager.toggleSoftInput(0, 0)}
}

Android EditText与软键盘相关推荐

  1. Android EditText将软键盘的回车改为搜索,并监听

    需求为: 当用户在界面内点击输入框,弹出键盘,键盘右下角示意为"搜索"按钮 当用户输入内容后,点击搜索按钮将进行关键词搜索 当用户没有输入内容点击搜索按钮,将收起键盘,回到界面(这 ...

  2. android edittext 把软键盘确认键改为搜索键

    EditText搜索时没有搜索按钮,而是调用软件盘上的按钮,这时便需要改变软键盘的确定键为"搜索",并监听该键的按钮. 在xml文件中添加: android:imeOptions= ...

  3. 全面解析Android EditText以及软键盘的设置

    原创文章,转载请注明出处:http://blog.csdn.net/myth13141314/article/details/54972337 软键盘的行为可以通过修改对应Activity的andro ...

  4. 对EditText的软键盘进行监听-----android:imeOptions

    在android发开过程中,有时候需要对EditText的软键盘进行监听. 当点击软键盘回车位置按键的时候,需要实现 完成.前进.下一项.搜索.发送或其他功能,这就需要开发者对软键盘回车的点击事件进行 ...

  5. Android PopupWindow 隐藏软键盘的方法

    今天,简单讲讲android里  PopupWindow 弹出在底部,被软键盘遮挡的问题. 之前,自己写一个PopupWindow 弹出在底部,可是如果软键盘显示时弹出,软键盘会遮挡PopupWi ...

  6. android 键盘将底部视图顶起,android 弹出软键盘将底部视图顶起问题

    今天要做一个搜索功能,搜索界面采用AutoCompleteTextView做搜索条,然后下面用listview来显示搜索结果,而我的主界面是在底 部用tab做了一个主界面导航,其中有一个搜索按钮,因为 ...

  7. Android 文本,软键盘使用指南

    目录 TextView的基本使用 TextView的基本属性 图文混排的三种实现方式 drawableTop,DrawableBottom,DrawableLeft,drawableRight 通过I ...

  8. Android 自定义安全软键盘 SafeKeyboard 开发详细说明 2.0

    Android 自定义安全软键盘 SafeKeyboard 开发详细说明 2.0 源码地址:GitHub:    https://github.com/SValence/SafeKeyboard 注意 ...

  9. Android 监听软键盘的高度并解决其覆盖输入框的问题

    1.前言 在某些项目中,我们常常需要自定义一个输入框,软键盘弹出时就把输入框顶上去,关闭时输入框再回到原位(比如下方的效果图,实际上各种 App 中的聊天界面和发布评论的界面大体都是这样).在这个过程 ...

  10. Android EditText默认数字键盘,能输入字母和数字

    Android EditText默认数字键盘,能输入字母和数字,使用inputType="number"不管用的,下面的方法管用默认是数字键盘,但是返回可到字母键盘: 布局: &l ...

最新文章

  1. playsound函数Linux使用,函数PlaySound和sndPlaySound的用法
  2. Activity的启动模式与flag详解
  3. 分页数据的新展示方式---瀑布流
  4. QT 32位程序Debug模式发布问题
  5. 开源开放 | 一个用于知识驱动的零样本学习研究的开源数据集KZSL(CCKS2021)
  6. $.extend()和(function($){….})(jQuery)
  7. 外贸网站建设(转自xmfish)
  8. (转)C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)
  9. js ---- 数组操作
  10. 蓝桥杯 ADV-91 算法提高 素数判断
  11. [bzoj 1861][zjoi2006] 书架
  12. java程序与数据库连接_将Java程序与数据库进行连接的操作方法
  13. 【2016年第1期】关于我国农业大数据中心建设的设想
  14. 虚幻4随笔(安装与界面说明)
  15. python 实现A星算法
  16. 什么是PID,PID的作用。
  17. 计算机系统组成习题检测及答案
  18. IFIX数据写入html,iFIX常见问题问答.doc
  19. java用下拉框实现出生日期_纯JS实现出生日期[年月日]下拉菜单效果
  20. 读懂 TS 中联合类型和交叉类型的含义

热门文章

  1. web网页常见特效3——轮播图
  2. 模拟实现ATM系统——Java
  3. idou老师教你学Istio12 : Istio 实现流量镜像
  4. k8s教程(pod篇)-污点与容忍
  5. 麦马大学的计算机录取要求,麦克马斯特大学,麦马相当于中国哪所大学?
  6. C#开发实战1200例(第I卷)目录
  7. 美食数据接口API (豆果美食NodeJs版API)
  8. java基础,鼠标拖动拼图_使用UGUI实现拖拽功能(拼图小游戏)
  9. 电信光猫 中兴ZXHN F412破解
  10. 如何使浏览器打开时,默认的文档模式就是标准模式