下面代码中Log打印的displayHeight是窗口可视区域的高度,因为style设置的windowNoTitle为true,所以这个高度和通过setContentView设置的布局的可见高度是相同的,所以也可以认为是R.layout.activity_measure_soft_key的可见高度。

Log中的parentHeight是视图的根元素的高度,根元素是一个FrameLayout,只有一个子元素,就是平时在onCreate方法中设置的setContentView。

Log中的softKeyHeight就是计算出的软键盘的高度,是通过根视图高度减去窗口可见高度得到。

对应Activity文件

public class MeasureSoftKeyActivity extends AppCompatActivity {public static String TAG = "TranslucentActivityTAG";private ConstraintLayout constraintLayout;private ViewGroup parentContent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_measure_soft_key);constraintLayout = findViewById(R.id.constraint_layout);parentContent = findViewById(android.R.id.content);parentContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {Rect r = new Rect();parentContent.getWindowVisibleDisplayFrame(r);int displayHeight = r.bottom - r.top;Log.v(TAG, "displayHeight:" + displayHeight);int parentHeight = parentContent.getHeight();Log.v(TAG, "parentHeight:" + parentHeight);int softKeyHeight = parentHeight - displayHeight;Log.v(TAG, "softKeyHeight:" + softKeyHeight);}});}
}

AndroidManifest.xml

在无Title样式下,通过r.bottom - r.top得到的高度是准确的可见高度。软键盘未弹起时与android.R.id.content对应的布局的高度相同。

<activity android:name=".activity.MeasureSoftKeyActivity"android:theme="@style/MeasureSoftKeyAppTheme"></activity>

设置无Title样式

<style name="MeasureSoftKeyAppTheme" parent="AppTheme"><!-- Customize your theme here. --><item name="android:windowNoTitle">true</item><item name="windowNoTitle">true</item>
</style>

layout布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/constraint_layout"><EditTextandroid:id="@+id/et_input"android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"/></android.support.constraint.ConstraintLayout>

Log:

V/TranslucentActivityTAG: displayHeight:1013
V/TranslucentActivityTAG: parentHeight:1848
V/TranslucentActivityTAG: softKeyHeight:835

Android如何获取软键盘的高度相关推荐

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

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

  2. Android中获取软键盘状态和软键盘高度

    应用场景 在Android应用中有时会需要获取软键盘的状态(即软键盘是显示还是隐藏)和软键盘的高度.这里列举了一些可能的应用场景. 场景一 当软键盘显示时,按下返回键应当是收起软键盘,而不是回退到上一 ...

  3. android中监听软键盘的弹出与隐藏,并获取软键盘的高度

    最近项目中有一个需求上弹出软键盘的时候,输入框位移至输入框上方,但是Activity中其他的VIew都不动.这个需求需要监听软软键盘的弹出与隐藏,并获取键盘的高度.上网找了一下发现,Android竟然 ...

  4. Android获取软键盘的高度、键盘的打开与关闭、监听键盘处于打开还是关闭状态

    最近在项目中,需要获取到软键盘的高度,再将底部的布局上移键盘的高度,话不多说,直接上代码: 获取软键盘高度 //一个静态变量存储高度public static int keyboardHeight = ...

  5. android 虚拟键 高度,Android,获取虚拟键盘的高度

    在很多时候,很多需求下,我们都需要得知键盘的高度啊!实在不能理解为什么安卓不提供这样方便的API.虽然没有很好的监听事件,但是我们还是可以制造一个的.想想虚拟键盘弹起来之后界面发生了什么变化?对的,有 ...

  6. android获得键盘高度,Android获取软键盘高度

    在 Android 里我们是无法直接获取软键盘高度的,但是在某些场景下,我们又需要获取软键盘的高度.我们可以使用 ViewTreeObserver.OnGlobalLayoutListener来监听窗 ...

  7. html 软键盘 页面高度,深入理解高度,获取屏幕、webview、软键盘高度

    如果没有手动调整过webview的高度的话,默认情况下,屏幕的高度=顶部状态栏的高度+webview的高度. 如果软键盘打开,则屏幕的高度=顶部状态栏的高度+webview的高度+软键盘的高度. HT ...

  8. Android 获取软键盘的删除delete事件

    对于软键盘删除事件,网上有很多方案是如下,但是 google api也说明了,这个只是监听硬件键盘,对于软键盘并不负责触发(我测试了一下,软键盘能够监听delete键,其他键像数字字母等没有触发这里的 ...

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

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

最新文章

  1. 安装rabbitMQ
  2. Android Studio设置字体
  3. 16进制/10进制数转化为浮点型案例
  4. 在 Lua 里 使用 Cocos Studio 导出的 .csb 文件
  5. php短网址案例,php生成短网址原理与实例
  6. 苹果宣布对2019款iPad降价:最高降幅达500元
  7. spark学习 小汇集
  8. 04.spring boot配置文件--yml
  9. rollup函数(分组后对每组数据分别合计)
  10. 信息熵是怎样炼成的 | 纪念信息论之父香农
  11. webkit 学习笔记 - 1. 浏览器与浏览器内核
  12. 前后端分离和不分离到底有什么区别
  13. 想要快乐陪伴左右吗?多种提高多巴胺的方法送给你
  14. matplotlib-10 title添加标题
  15. 开箱即用的 SQL Server Docker
  16. 什么是反射以及反射的作用
  17. “阿里外传”之一:阿里巴巴有只宠物,叫雅虎
  18. 【EPS精品教程】EPS2016三维测图软件常用快捷键(建议收藏)
  19. 八大数据分析模型之——事件模型(二)
  20. Python编曲实践(四):向MIDI文件中添加鼓组音轨

热门文章

  1. 生活随感2022年1月26日20:52:52
  2. uniapp(微信小程序)使用vant全过程
  3. 梳理一个问题(垃圾分类,垃圾回收)
  4. 滴滴服务分计算机制,滴滴司机,如何避免扣除服务分?服务分到底有多重要?...
  5. 从内外参到 Structure From Motion(SFM)
  6. 数据结构(c++)--宝岛探险
  7. MyBatis一:关于MyBatis及的搭建过程
  8. latex对应希腊字符查表
  9. 网络安全是一个好专业吗
  10. jQuery实现文件下载( 隐藏表单实现ajax下载 )