`
hunankeda110
  • 浏览: 747055 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android监听虚拟键盘隐藏和显示事件

阅读更多

刚开始在onconfigurationChanged中监听,结果发现该方法在configuration变化即配置文件发生变化时才会被调用,如横竖屏切换,android重新载入配置文件时。而键盘隐藏不会触发该方法。

后来采用如下方法完美解决了键盘隐藏监听事件。

 

 

//该Activity的最外层Layout

finalView activityRootView = findViewById(R.id.activityRoot);

 

//给该layout设置监听,监听其布局发生变化事件
activityRootView
.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListener(){


   
@Override
   
publicvoid onGlobalLayout(){

 

       //比较Activity根布局与当前布局的大小
       
int heightDiff = activityRootView.getRootView().getHeight()- activityRootView.getHeight();
       
if(heightDiff >100){

        //大小超过100时,一般为显示虚拟键盘事件

             }else{

        //大小小于100时,为不显示虚拟键盘或虚拟键盘隐藏

       }
    
}
});

0
5
分享到:
评论
3 楼 认证用户 2017-06-16  
activityRootView.getRootView().getHeight() 应该定义成变量,仅初始化一次
2 楼 WC44 2013-12-09  
有问题请教一下,I9250,我在程序里主动隐藏虚拟键盘后,heightDiff 仍然是100的差。activityRootView.getRootView().getHeight()和activityRootView.getHeight()都变大了,博主遇到这样的情况吗?
1 楼 43350860 2013-09-06  
思路不错,我之前用了一个 OnLayoutChangeListener, 发现API级别太高了, 2.3 无法兼容。  这种方式试试看。

相关推荐

    Android监听输入法软键盘按键demo

    `InputMethodManager`是Android系统提供的管理输入法的类,可以用来控制软键盘的显示和隐藏。虽然它不直接提供按键监听,但我们可以通过监听IME(Input Method Editor)的动作事件来间接实现监听。通过重写`Activity...

    自定义android虚拟键盘

    自定义Android虚拟键盘允许开发者根据特定需求或应用场景定制键盘布局、功能和样式,为用户提供更个性化的输入体验。以下是对自定义Android虚拟键盘相关知识点的详细说明: 1. **基本概念** - **...

    Delphi XE 10.2 FMX 程序中避免输入焦点被虚拟键盘遮挡

    为了解决这个问题,我们可以创建一个自定义组件或者辅助类,来监听键盘的显示和隐藏事件,从而调整界面布局。 在提供的文件`Fmx.vkbdhelper.pas`中,可能包含了一个名为`TVKBHelper`的类,这个类就是用来处理虚拟...

    添加虚拟按键隐藏控制

    标题"添加虚拟按键隐藏控制"所涉及的知识点主要是关于如何在Android应用中实现对虚拟按键的动态隐藏和显示功能。 1. **Android权限与API级别**:首先,你需要确保应用具有足够的权限来操作系统UI。由于涉及到系统...

    Android键盘(功能键、显示、隐藏)

    本文将深入探讨Android键盘的功能键、如何显示以及隐藏键盘,同时也会涉及到Android开发中的相关API和技术。 首先,我们来了解Android键盘的基本类型。在Android中,主要有软键盘和硬键盘两种。软键盘通常出现在...

    Android判断软键盘是否弹出

    例如,当用户打开虚拟键盘时,我们可能需要自动调整输入框的位置,或者在键盘隐藏时恢复原来的布局。标题“Android判断软键盘是否弹出”所涉及的知识点主要集中在如何实现这个功能。下面将详细解释这一过程。 首先...

    安卓输入框被虚拟键盘挡住的问题(微信开发)

    总的来说,解决安卓输入框被虚拟键盘挡住的问题需要开发者具备良好的跨平台适配意识和技术,可能涉及到页面布局的动态调整、滚动事件的监听以及对不同浏览器行为的理解。尽管存在一些限制,但通过不断尝试和优化,总...

    Android自定义软键盘

    `KeyboardView`是Android SDK提供的一种用于显示虚拟键盘的视图组件,它允许开发者自定义键位布局、图标以及各种键盘事件的处理。通过`KeyboardView`,我们可以构建出与系统键盘类似但具有定制特性的软键盘。 1. **...

    Android 显示和隐藏软键盘的方法(手动)

    在Android开发中,经常会有一个需求,做完某项操作后,隐藏键盘,也即让Android中的软键盘不显示。今天,和大家分享如何利用代码来实现对Android的软件盘的隐藏、显示的操作。 1、方法一(如果输入法在窗口上已经...

    Android自定义随机键盘

    在Android中,软键盘通常通过InputMethodService组件来实现,这是一个基于Service的服务,用于创建和管理虚拟键盘。开发者需要继承InputMethodService,并重写其提供的方法,如onInitializeInterface()、...

    Android自定义软键盘KeyboardView

    `KeyboardView`是Android SDK提供的一种组件,它允许开发者创建和显示一个可交互的虚拟键盘。本文将深入探讨如何利用`KeyboardView`实现自定义软键盘,并通过分析`KeyBoardDemo`示例来阐述关键知识点。 首先,`...

    调用android自定义软键盘demo

    首先,创建自定义软键盘的关键在于创建一个新的`KeyboardView`类,它是Android SDK提供的用于显示虚拟键盘的组件。你需要继承`KeyboardView`并重写其相关方法,以便实现自定义布局和行为。例如,你可以覆盖`onDraw()...

    Android 集成屏幕和键盘的demo

    本文将深入探讨如何在Android中处理键盘的显示、隐藏以及获取屏幕的相关数据,以创建一个高效的用户体验。 首先,我们关注的是标题中的"Android 集成屏幕和键盘的demo"。在Android系统中,键盘的显示与隐藏通常涉及...

    Android 解决沉浸式状态栏和华为虚拟按键冲突

    或者,可以通过监听`onKeyUp`和`onKeyDown`事件来检测用户是否按下了虚拟按键,并据此调整布局。 5. **使用第三方库**:有一些开源库如`Android-ImmersionBar`可以帮助开发者更方便地实现沉浸式状态栏和虚拟按键的...

    登陆页面,解决了因为虚拟键盘的弹起对button的遮挡,

    4. **键盘关闭事件监听**:监听键盘的打开和关闭事件,当键盘隐藏时,可以将页面恢复到原始状态。这样,用户关闭键盘后,页面布局能立即恢复正常。 5. **智能设计**:在设计阶段,考虑虚拟键盘出现时的布局变化,...

    Android自定义软键盘不同按键设置不同背景的实现(自动向上顶适应布局)

    // 虚拟键盘隐藏,恢复键盘位置 keyboardView.setPadding(0, 0, 0, 0); } } }); // dp转px的方法 private float dpToPx(float dp) { return dp * getResources().getDisplayMetrics().density; } ``` 最后,...

    Android安卓应用源码-键盘输入类源代码(5例).zip

    1. **EditText和InputMethodManager**:在Android中,EditText是用于接收用户文本输入的组件,而InputMethodManager是系统服务,负责管理输入法的显示和隐藏。通过调用InputMethodManager的`showSoftInput()`和`...

    Android-KeyboardView自定义安全键盘

    它允许开发者创建和显示自定义的虚拟键盘,替代系统默认的软键盘。这在某些场景下非常有用,比如金融应用中为了防止键盘记录器,可能会选择自定义一个仅包含数字的键盘来输入密码。 要自定义`KeyboardView`,首先...

Global site tag (gtag.js) - Google Analytics