软键盘打开和关闭监听

Android软键盘监听高度变化,打开关闭,任意View跟随软键盘进行平移 Android软键盘监听高度变化,打开关闭,任意View跟随软键盘进行平移 https://github.com/rockscy/uicontroll 阅读详情

 

1、自定义软键盘监听控件

代码如下,核心要点查看备注:

public class KeyboardLayout extends RelativeLayout {
    //软键盘展开
    public static final byte KEYBOARD_STATE_SHOW = -3;
    //软键盘隐藏
    public static final byte KEYBOARD_STATE_HIDE = -2;
    //初始化软键盘
    public static final byte KEYBOARD_STATE_INIT = -1;
    private boolean mHasInit;
    private boolean mHasKeybord;
    private int mHeight;
    private onKeyboaddsChangeListener mListener;

    private int mScreenHeight;

    public KeyboardLayout(Context context) {
        super(context);
        init();
    }

    public KeyboardLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public KeyboardLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        //屏幕尺寸信息
        WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
        if (null != wm) {
            DisplayMetrics outMetrics = new DisplayMetrics();
            wm.getDefaultDisplay().getMetrics(outMetrics);
            mScreenHeight = outMetrics.heightPixels;
        }
    }

    public void setOnkbdStateListener(onKeyboaddsChangeListener listener) {
        mListener = listener;
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        if (b >= mScreenHeight) {
            //bottom的尺寸必须小于屏幕尺寸,一般来说都会小于,但测试发现,魅族手机会出现b==mScreenHeight,导致监听失败
            return;
        }
        if (!mHasInit) {
            mHasInit = true;
            mHeight = b;
            if (mListener != null) {
                mListener.onKeyBoardStateChange(KEYBOARD_STATE_INIT);
            }
        } else {
            mHeight = mHeight < b ? b : mHeight;
        }
        if (mHasInit && mHeight > b) {
            mHasKeybord = true;
            if (mListener != null) {
                mListener.onKeyBoardStateChange(KEYBOARD_STATE_SHOW);
            }
        }
        if (mHasInit && mHasKeybord && mHeight == b) {
            mHasKeybord = false;
            if (mListener != null) {
                mListener.onKeyBoardStateChange(KEYBOARD_STATE_HIDE);
            }
        }
    }

    public interface onKeyboaddsChangeListener {
        void onKeyBoardStateChange(int state);
    }
}

2、进行软键盘监听

要正常使用首先需要将KeyboardLayout作为跟布局进行监听,其次KeyboardLayout.onKeyboaddsChangeListener需要实现该接口,重写:

@Override
public void onKeyBoardStateChange(int state) {
    switch (state) {
        case KeyboardLayout.KEYBOARD_STATE_HIDE:
           //软键盘隐藏
            break;
        case KeyboardLayout.KEYBOARD_STATE_SHOW:
           //软键盘关闭
            break;
    }
}

3、Eidttext光标与软键盘显示设置

如果刚刚进来需要软键盘关闭,显示光标,则需要设置:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
        | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

4、软键盘隐藏工具类

public static void showKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) view.getContext()
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm != null) {
        view.requestFocus();
        imm.showSoftInput(view, 0);
    }
}

5、软键盘显示工具类

public static void hideKeyboard(View view){
    InputMethodManager imm = (InputMethodManager) view.getContext()
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    if (imm != null) {
        imm.hideSoftInputFromWindow(view.getWindowToken(),0);
    }
}

 

国密证书实战:在CentOS 7上构建GmSSL私有CA与完整证书链 本文详细介绍了在CentOS 7操作系统上,使用GmSSL工具构建私有国密证书颁发机构(CA)与完整证书链的实战指南。内容涵盖从部署GmSSL、创建国密根CA、签发服务器与客户端证书,到生产环境安全加固与最佳实践的全流程,旨在帮助系统管理员和安全工程师建立统一、可控的内部国密安全通信体系。 阅读详情

相关推荐

Unity详细介绍说明限制Unity帧率的方式

在Unity开发中,帧率(FPS,Frames per Second)是一个非常重要的表现标准,它直接影响了游戏运行的流畅度。在某些应用场景里,我们可能需要手动限制帧率。限制帧率可以减少电脑的CPU和GPU负载,使运行更加稳定,同时对于移动设备来说还能有效降低电量消耗。下面就详细介绍几种限制Unity中帧率的方式。

zjw1349547081的专栏 5433

Compose中快捷监听软键盘收起弹出状态方法(兼容Android各个版本)

compose中快捷监听软键盘收起

Tobey_r1的博客 3223

2024最新实战:用1Panel面板+Docker快速部署Frps服务端(含Nginx配置模板)

本文详细介绍了2024年企业级内网穿透方案,通过1Panel面板和Docker技术快速部署Frps服务端,包含Nginx反向代理配置模板。从服务器选型、系统准备到安全加固,提供全栈实战指南,帮助企业和开发者高效实现内网穿透需求。

weixin_27966471的博客 419

Android 监听软键盘显示和隐藏

相关文章 Android TextView控件 Android EditText控件 Android 监听软键盘显示和隐藏 Android Span应用 1. 监听软键盘 由于官方没有提供相关的监听,只能通过界面布局来判断软键盘显示和隐藏。 (1) 通过OnLayoutChangeListener来监听 getWindow().getDecorView().addOnLayoutChangeLis.........

假装你是大灰狼的专栏 7020

解锁RK3588视觉潜能:RGA硬件加速库实战指南

本文深入探讨了如何利用RK3588芯片内置的RGA硬件加速库,解决视觉应用中图像预处理的性能瓶颈。通过实战指南,详细介绍了RGA库在YUV转RGB、图像缩放等核心操作上的应用,相比CPU软处理可大幅降低延迟与CPU占用,从而充分释放RK3588的NPU算力,构建高效的AI视觉预处理流水线。

zeta9的博客 669

fpga学习——zynq图像处理中的DVP流接口封装

之前文章介绍了基于zynq的图像处理架构问题。其中,作为开发者,需要重点关注图像传感器接口、处理算法、显示接口,这些模块。现在我们一同学习用于视频数据接口的DVP模块,并将其封装成AXI-stream接口便于直接和VDMA IP通信。 DVP_AXI stream IP v1.0使用说明 1.设计概述 •用于cmos传感器视频数据采集,将cmos输出的8位视频数据拼接成RGB 565模式 •AXI_stream主机接口,用于和PS端内存的数据交互 •基于vivado 18.3软件设计 2.模块分析

weixin_41895751的博客 4580

监听键盘的删除方法

查看API我们不难发现,其实系统是有事件抛出来的: @protocol UIKeyInput - (BOOL)hasText; - (void)insertText:(NSString *)text; - (void)deleteBackward; @end NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField

发飙的蜗牛 1826

MediaPipe+Unity动作捕捉实战:如何用普通摄像头驱动3D人物模型(附避坑指南)

本文详细介绍了如何利用MediaPipe和Unity实现低成本动作捕捉,仅需普通摄像头即可驱动3D人物模型。通过MediaPipe的3D坐标预测能力,结合Unity的骨骼映射优化,解决单目摄像头下的三维重建难题,并提供实战避坑指南和性能优化技巧,帮助开发者快速实现专业级的人物模型驱动效果。

weixin_29047545的博客 356

Android软键盘的监听与高度控制的几种方案及常用效果

本文我们会一起复习一下软键盘高度获取的几种方式,布局贴在软键盘上效果的实现与优化。事情是这样的,有一天我逛PDD的时候,发现这样一个效果,在搜索页面中,如果软件弹起了就会有一个语音搜索的布局,当我们隐藏软键盘之后就隐藏这个布局,然后我又看了一下TB的搜索页面,都是类似的效果,但是我发现他们的效果都有优化的空间。

m0_59162559的博客 2113

2025资源从哪里来!

研究网络通信中的安全问题,如VLAN划分、路由协议(静态、动态如OSPF、BGP)、NAT转换、AAA认证、访问控制列表(ACL)等。‌Wi-Fi安全设置‌、‌密码破解原理‌(仅用于合法测试或教育目的)、‌常见Web安全问题‌如SQL注入、XSS跨站脚本攻击等的防范措施。在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不?‌防火墙配置与策略‌、‌入侵检测与防御系统(IDS/IPS)‌、‌端口扫描与漏洞扫描技术‌等。

qq_56248592的博客 1902

【笔记篇】Davinci Configurator BswM模块

AUTOSAR BSWM模块配置介绍

weixin_47571898的博客 1534

欢迎使用优快云-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

sdaxiang的专栏 329

65页PPT全面学习大型汽车集团企业IT信息化(管理架构、应用架构、技术架构)

订单到交付(OTD):借助ERP、MES、LES、SRM、QMS、APS等系统,实现财务与业务一体化、高级排产、生产过程自动化及供应链协同。- 数据标准化:数据标准化是企业信息化建设基石,包括制定统一业务解释和标准、维护管理流程、发布应用等,涉及数据统一定义、分类、编码等内容。- 大数据应用:汽车行业大数据应用涵盖生产、销售、售后等环节,如设备预见性保养、销量预测、质量预警等,提升企业运营效率和决策能力。- 策略明晰:明确C2M管理矩阵,包括供应商、采购、物流、制造、销售、财务等环节的策略。

cdfunlove的博客 1049

Android 监听软键盘打开和关闭

先上图 这是一个大佬的方法,封装好了类,直接拿去调用一下就可以了很方便 这里找不到大佬的原文链接。因为我发现网上很多这个代码,参数注释一模一样,就是年代不一样。。。分不清。我这也是一样的,懒得自己封装了,代码已经被我净化了,没啥可以删除的了,注释留着帮助小白。 注意事项在文章末尾 重点1:创建一个空类,直接把这个代码块粘进去,完成第一步 import android.app.Activity; import android.graphics.Rect; import android.v.

学习使我快乐_玉祥 1785

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android软键盘的打开和关闭的监听

布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:to...

mintent的博客 2703

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

怎么监听Android软键盘的打开和关闭

这个昨天写了蛮近,太费劲了,目前还没有我觉得比较好的方式去解决。 也查阅了很多朋友的资料和博客,却一直没有完成我需要的效果。 最后无奈使用了下面这个方法: 1 public class InputStateLinearLayout extends LinearLayout{ 2 private OnSizeChangedListener listener; 3 ...

weixin_30920597的博客 91

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

android点击打开软键盘,Android中的活动中的软键盘打开和关闭监听器

这仅适用android:windowSoftInputMode于您的活动adjustResize在清单中设置的情况。您可以使用布局侦听器来查看键盘是否调整了活动的根布局。我为我的活动使用类似下面的基类:publicclassBaseActivityextendsActivity{privateViewTreeObserver.OnGlobalLayoutListenerkeyboar...

weixin_30386973的博客 208

Android 软键盘的打开关闭监听

软键盘的事件监听,通常软键盘的收起方式大致3种: 1.点击软键盘右下角的Return按钮(系统收起) 2.输入框焦点时按返回按钮(系统收起) 3.点击软键盘和输入框的外部(自发收起) 4.点击软键盘自带的收起按钮(软键盘收起)前三种事件可以监听,方式都比较简单1.点击软键盘右下角的Return按钮给输入框设置监听 editText.setOnEditorActionListener(new

Kenway090704的博客 1775

android 取消点击监听,Android中的活动中的软键盘打开和关闭监听...

这仅适用于android:您的活动的windowSoftInputMode在清单中设置为adjustResize.您可以使用布局侦听器来查看键盘是否调整了活动的根布局.我为我的活动使用类似下面的基类:public class BaseActivity extends Activity {private ViewTreeObserver.OnGlobalLayoutListener keyboard...

weixin_42275078的博客 632

android控制软键盘弹起,android 键盘监听弹起和关闭

https://blog.youkuaiyun.com/Dota_wy/article/details/78781197电话键键名 描述 键值KEYCODE_CALL 拨号键 5KEYCODE_ENDCALL 挂机键 6KEYCODE_HOME 按键Home 3KEYCODE_MENU 菜单键 82KEYCODE_BACK 返回键 4KEYCODE_SEARCH 搜索键 84KEYCODE_CAMERA 拍照...

weixin_42392054的博客 448

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

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

龙旋的博客 5248

Android 监听手机键盘打开和关闭状态

工具类: import android.graphics.Rect; import android.view.View; import android.view.ViewTreeObserver; import java.util.LinkedList; import java.util.List; public class SoftKeyboardStateHelper impleme

xizhilang201的专栏 862

Android 底部按钮被软键盘顶起问题解决

我们目前的项目是采用单 Activity 多 Fragment 的架构模式, AndroidManifest.xml 内 MainActivity 的配置如下所示。 <activity android:name=".MainActivity" android:exported="true" android:window...

MarkRZJ的博客 5876

android 监听 soft keyboard打开与关闭

首先在manifest.xml文件中将相应的activity属性中加入android:windowSoftInputMode="adjustResize" 参数。 下一步就是在layout resize的时候加入相应的listener,可惜android没有提供相应的api,我们只能用自己的方式来监听这个事件 代码如下: public class MyLayout ex

u012909631的专栏 1530

软键盘问题整理

最近开发中遇到了一些软键盘相关的问题,所以整理下与大家分享: 一、软键盘的开启与关闭 开启: 1、获取InputMethodManager实例。 2、调用showSoftInput()方法。 fun showSoftInput(view: View?) { view?.let { val inputMethodManager = it.context?.getSystemService(Context.INPUT_METHOD_SERVICE.

且听真言 1820

Android 监听键盘状态 获取键盘高度

Android暂时还没有提供一个合适的API来获取/监听键盘的状态和高度 , 而我们又经常会有这个需求. 最近我的一个项目中,在ugc页面需要在键盘顶部,紧贴着键盘显示一个文字提示,当键盘消失时就隐藏. 因此,我需要监听软键盘的打开/关闭 , 以及获取它的高度. ViewTreeObserver A view tree observer is used to register listeners...

卓原的进化之旅 3116
上一篇: WebView应用详解
下一篇: Android图文混排
一杯清泉
博客等级 码龄11年 314粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值