转载-键盘弹出后,导致底部布局被顶上去

Android 软键盘消失与展示的监听 实现软键盘消失与展示的监听,从而做出自己想要逻辑。 首先定义工具类SoftKeyBoardListener,代码如下: public class SoftKeyBoardListener { private View rootView; //activity的根视图 int rootViewVisibleHeight; //纪录根视图的显示高度 private On... 阅读详情

前言

现在有一个需求,在一个页面中,顶部有一个悬浮的控件一直显示,中间是可滑动的,即使软键盘弹出;底部也有一个悬浮的控件,软键盘弹出的时候,底部悬浮控件不随着软键盘的弹出而上移显示。显示效果如图:

图一:软键盘隐藏

图二:软键盘显示-第一条获取焦点

图三:软键盘显示-最后一条获取焦点

          

 

我们知道页面上软键盘弹出的时候页面的显示效果跟android:windowSoftInputMode属性中的类似"adjust..."值有关,类似adjust...的值有三个,adjustUnspecified、adjustResize、adjustPan,三个属性值都实现不了想要的效果(详见https://blog.youkuaiyun.com/qiutiandepaomo/article/details/84028558)。

想到的解决方案是:中间部分设置成可滑动的(例如加一个ScrollView或者RecyclerView等),设置windowSoftInputMode属性为adjustUnspecified或adjustResize,来保证顶部标题行一直展示,通过监听软键盘的弹出与隐藏来控制底部按钮的显示,软键盘弹出的时候,底部按钮隐藏,软键盘隐藏的时候,底部按钮展示。

解决方案

具体实现步骤是:

1、为当前页面最外层的layout设置一个OnLayoutChangeListener监听器监听当前页面变化的高度,认为Activity变化的高度超过屏幕的1/3,就是软键盘弹起或关闭了。

public class MainActivity extends Activity {

    RelativeLayout mRlTest;
    RelativeLayout mRlCommit;

    //屏幕高度
    private int screenHeight = 0;
    //软件盘弹起后所占高度阀值
    private int keyHeight = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取屏幕高度
        screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
        //阀值设置为屏幕高度的1/3
        keyHeight = screenHeight / 3;

        mRlTest = findViewById(R.id.rl_test);
        mRlCommit = findViewById(R.id.rl_commit);

        mRlTest.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) {//认为软键盘将Activity向上推的高度超过了屏幕高度的1/3,就是软键盘弹起了,这个时候隐藏底部的提交按钮
                    //延迟100ms设置不可见性是避免view还没计算好自己的宽高,设置可见不可见性失效。
                    mRlCommit.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            mRlCommit.setVisibility(View.GONE);
                        }
                    }, 100);

                } else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) {//认为软键盘将Activity向下推的高度超过了屏幕高度的1/3,就是软键盘隐藏了,这个时候显示底部的提交按钮

                    mRlCommit.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            mRlCommit.setVisibility(View.VISIBLE);
                        }
                    }, 100);
                }
            }
        });
    }

完整代码:https://github.com/ruxing1102/SoftKeyboardTest/tree/master

              </div>
android 底部控件,随软键盘弹出,跟着上移 有时候我们需要这种效果,键盘弹出,底部的内容跟随上移。今天我就实现了这样一个小小的效果 话不多说先看效果:  我们直接来看布局文件main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent 阅读详情

相关推荐

Android监听软键盘弹出和收起事件

监听Android软键盘弹出和收起事件(所有代码都是抽离自facebook/react-native源码中, 亲测有效, 放心食用)。回调事件方法参数包含键盘是否弹出(isShow)、键盘高度(keyboardHeight)、屏幕可用高度(screenHeight)、屏幕宽度(screenWidth)。

Android通过监听软键盘弹起与关闭实现软键盘弹起时底部按钮消失、关闭时底部按钮显示

现在有一个需求,在一个页面中,顶部有一个悬浮的控件一直显示,中间是可滑动的,即使软键盘弹出;底部也有一个悬浮的控件,软键盘弹出的时候,底部悬浮控件不随着软键盘的弹出而上移显示。显示效果如图: 图一:软键盘隐藏 图二:软键盘显示-第一条获取焦点 图三:软键盘显示-最后一条获取焦点              我们知道页面上软键盘弹出的时候页面的显示效果跟android:windowSoft...

qiutiandepaomo的博客 1831

Android 设置一个底部控件view随着软键盘的弹出而上移

Android 底部控件随软键盘弹出而上移demo

Android软件盘顶起底部控件的解决方案

 情景描述:当Activity的布局中有RecyclerView,ListView等列表控件时,软件盘弹出会将底部控件顶起,这时底部控件可能遮挡住一些我们想要显示的内容,如下图所示,输入框就被遮挡住了,这肯定不是我们想要的结果。   解决方案:这里提供两种解决方案。(只需要使用其中一种即可) 1. 在AndroidManifest文件中,给当前Activity配置android:window...

SkySmile1992的博客 3118

视频帧插学习(三):ema-vfi代码拆解和分析

video interp EMA-VFI

mikhailbran的博客 712

百度新闻评论内容抓取

通过抓包分析发现,百家号手机app端文章评论内容接口为:https://ext.baidu.com/api/comment/v1/comment/getlist?appid=101&sid=1008524_2-1010050_1-1007549_23033-1007550_23035&cuid=01B5EAF73E8A83BB842BE04E4FB6C656|23200201047...

codingforhaifeng的博客 2422

Android 监听软键盘显示和隐藏

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

假装你是大灰狼的专栏 7020

unity制作交互视频/互动视频

unity制作交互视频/互动视频 思路 1.先让unity播放视频 2. 视频播放结束后,视频暂停,按钮出现 3.按钮跳转下一个视频 视频播放 先创建UI-Raw Iamge 在Raw Iamge 挂载组件 Video Player 接着挂载视频播放的脚本 using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; publi...

weixin_45588911的博客 8426

转载一篇干货,Android软键盘弹出时把布局顶上去的解决方法

原址:http://blog.sina.com.cn/s/blog_9564cb6e0101g2eb.html 解决方法,在mainfest.xml中,对那个Activity加: Android:windowSoftInputMode="adjustPan|stateHidden"> 就不会把原来Activity的布局给顶上去了。   %¥¥¥

yangyang的博客 9918

视觉SLAM十四讲习题答案

阅读《视觉SLAM十四讲》中遇到的问题及习题资源整理,或为原创,或来自网络,如有问题请与我联系,会在第一时间加以修正。 后来自己写完看到另一位写的博客,相形见绌,大家可以互相结合的看。 第一讲 1.线性方程的解:转载自宋洋鹏(youngpan1101),了解线性代数可关注B站3Blue1Brown,以及线性代数,知乎上有其精细笔记。 2.高斯分布参考这位博主Johnny-Cuii的文章,具体...

INFINITE POSSIBILITIES 1万+

SNN系列|编码篇(2)时序编码

Tempotral Coding 选择编码方法是要根据编码对象以及模型如何处理编码信息进行选择,如下是一种时序信息的编码对比: Threshold-based encoding 又称为tempotral contrast,该方法可以用于编解码一段序列,当差值超过阈值时发放脉冲,阈值是根据编码的序列自适应变化的。 使用该编码方法时,实值序列最好是沿时间变化的,因为在根据差分决定是否发放脉冲后,脉冲的顺序与差分顺序有关。 Time-to-first spike coding 该编码方法将信息用神经元首次

Tianlong Lee的博客 1万+

Android软键盘弹出将底部栏顶上去并不会挤压界面

界面需要,找到了一种不需要去设置android:windowSoftInputMode属性的解决keyboard和layout不适问题 有关设置android:windowSoftInputMode的资料,可自行百度。 我的方法就是,将xml文件的根布局设置成ScrollView,将之前的布局嵌套在里面就行了,不需要去设置以上的任何属性 在中...

XCJJDD182652的博客 824

16、AI与无人机助力紧急器官移植及医疗物资运输

本文探讨了AI与无人机(UAV)集成模型在紧急器官移植和医疗物资运输中的应用。传统运输方式受限于交通、时间和环境因素,而基于图神经网络(GNN)的AI-UAV系统可实现高效、智能、全天候的医疗物资配送,具备实时温湿度监控、自动导航和适应复杂地形等优势。文章分析了该模型在血液、器官运输中的关键作用,展示了其在澳大利亚、中国、美国等国的实际应用案例,并通过表格与流程图说明运作机制。同时,文章还探讨了技术、法规和社会层面的挑战及应对策略,展望了未来技术融合、应用拓展和国际合作的发展趋势,凸显其在全球医疗物流中的广

lll78的博客 102

Android 软键盘弹出时把布局顶上去或者覆盖上去需求解决方案

版权声明:本文为优快云博主「erweimaerweima」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/lvshuchangyin/article/details/73825933 方案一: 当你在你的activity中的oncreate中setContentView之前写上这个代码以后,软键盘会覆盖在屏...

芒果蜜桃π 1112

【DaVinci Developer专题】-23-IDT高阶应用:结构体类型的数组

共8页 目录 1 创建一个Record IDT 2 创建一个Array IDT 3 创建一个S/R Port Interface 4 创建一个Constant 5 导入CFG生成代码的总结 6 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键字: 缩略语/术语 含义 DEV DaVinci Developer .

「汽车电子助手」的博客 1670

100:vue+cesium: 加载glb文件,随机位置加载2000架飞机

本示例在 Vue + cesium 项目中随机位置加载2000架飞机,飞机是glb文件,每个大小为571kb。这个示例属于性能优化的范畴内,通常如果用entity加载glb只能显示几个飞机,这里采用primitive的方法来加载。直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果.

大剑师兰特的GIS世界 706

Android软键盘弹出时把布局顶上去,控件乱套解决方法

解决办法: 方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 方法二:在项目的AndroidManifest.xml文件中界面对应的<activity>里加入android:wind...

a1003434346的博客 3618

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

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

Android软键盘弹出时把布局顶上去的解决方法

转载: 解决Andriod软键盘出现把原来的布局给顶上去的方法(转) 链接:http://blog.sina.com.cn/s/blog_9564cb6e0101g2eb.html 决方法,在mainfest.xml中,对那个Activity加: Android:windowSoftInputMode="adjustPan|stateHidden">

4414

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android让xml布局的底部跟随软键盘

全屏的时候,设置adjustResize是没有什么卵用的。 在stackoverflow上看到一个方法:动态设置activity根布局的高度,做到xml底部随着软键盘的弹出而上移。 链接:http://stackoverflow.com/questions/7417123/android-how-to-adjust-layout-in-full-screen-mode-when-so...

265

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

移动端键盘弹起导致底部按钮上浮解决方案

问题描述:移动端页面输入框聚焦伴随着键盘弹起,底部icon浮到键盘上方,导致样式不友好 解决思路:在键盘弹起时,不让原本固定在底部的icon自动浮起。监听屏幕的实时高度,控制底部按钮的显示与否,从而达到按钮固定在底部的效果。 解决方案(本例是在vue框架下实现的解决方案代码): html: 1 2 3 4 <divclass="log...

weixin_30663391的博客 589

判断软键盘的弹出

未弹出软键盘时的布局,很简单,只有一个webview加一个底部bar,底部bar由一个linearlayout包含四个button组成。 当布局中有webview时,点击webview上的输入框,会有软键盘弹出以输入文字。 问题:此时,如果布局含有底部bar,底部bar会被软键盘托起。如下图所示: 解决方式: 使用 RelativeLayout.getViewTr...

HUNTER201508的博客 234

转载2——Android软键盘弹出时把布局顶上去的解决方法

今天要做一个搜索功能,搜索界面采用AutoCompleteTextView做搜索条,然后下面用listview来显示搜索结果,而我的主界面是在底部用tab做了一个主界面导航,其中有一个搜索按钮,因为在搜索条中输入文字的时候会弹出软件盘,但是如果不做什么设置的话,软键盘弹出来的同时,会把我下面的tab导航给相应拉到屏幕的上面,界面显示的扭曲啊,后来找到一种解决方法,在相应的activity中(比如我这是tab的activity,用的是adjustpan)添加 android:windowSoftInputM

白小花同学的博客 613

Android中软键盘弹出可能遮挡布局

当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入。 解决办法: 方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST

baidu_22735341的博客 8275

解决fixed属性在ios软键盘弹出后失效的bug

  这周在做空间(“类似”qq空间)项目。首页是好友发表的说说,可以针对每条说说进行评论,评论框吸附固定在屏幕底部。此时,Bug来了...在ios上,软键盘弹出后fixed属性失效了。后来发现,ios绝大部分情况把fixed变成了absolute。为什么说是绝大部分情况下而不是100%,后面会提到。下面介绍2种方案... 1、css布局(推荐)   解决思路:既然在 iOS ...

745

android 页面默认不弹软键盘_Android 初次进入默认不弹出软键盘

【遇到问题】初次进入某个界面时,当页面中有EditText ,会自动聚焦并弹出软键盘。【解决方法】方法一getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);此方法默认不弹出软键盘并不会禁用软键盘方法二android:name="com.example.MainActivity"androi...

weixin_39807352的博客 1261
上一篇: Parcelable encountered IOException writing serializable object问题解决
下一篇: 修改Google浏览器默认打开是金山毒霸网址
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值