Android软键盘和底部面板的无缝切换

您所在的位置:网站首页 套路键盘怎么切换 Android软键盘和底部面板的无缝切换

Android软键盘和底部面板的无缝切换

2024-07-16 20:25:49| 来源: 网络整理| 查看: 265

开局就是二张图。先看效果是不是自己想要的,然后再慢慢往下看。第一张图是默认高度,第二张图是高度增加之后的变化。可以看到,切换还是蛮顺畅的,没有出现跳闪的情况。         

      

这两天在弄一个留言板功能,可进行文字、语音、图片还有其他功能的留言。这时就需要一个面板来存放这些附加功能。一般都是输入框旁边有个加号,来进行面板的弹出。但是我当我底部面板出现时,会出现跳闪问题,就是面板和输入框会被软键盘顶到上面去,然后等软键盘收起来,面板才降下来,这种效果体验起来不是很好,就先自己想了想,但也没想到好的解决办法,又看了看微信、QQ、支付宝的聊天界面,体验效果很好,并且当软键盘的高度变化时,面板的高度也会随之变化。体验效果很好。

        算了,还是百度,搜了搜知道了大致的解决方案。就是当面板和输入框切换时去改变软键盘的显示模式。一般我们改变软键盘的显示模式都是在清单文件AndroidManifest.xml中对Activity的windowSoftInputMode标签进行修改。但这次我们需要在代码总动态的去改变。主要是针对这两种模式进行改变。如下

当属性为adjustResize的时候,软键盘弹出时会挤压Activity窗口大小,这样可以保证输入法不会覆盖到输入框;

当属性为adjustNothing的时候,软键盘弹出时会覆盖到当前窗口上,窗口大小不变,这种情况输入法有可能会覆盖输入框。

知道解决的关键点之后,还需知道软键盘的高度,以及软键盘的隐藏和显示状态。这样就可以对不同的情况进行相应的改变。

先上代码获取软键盘的高度和显示、隐藏状态的代码。

public class KeyboardLayout extends FrameLayout { private KeyboardLayoutListener mListener; private boolean mIsKeyboardActive = false; // 输入法是否激活 private int mKeyboardHeight = 0; // 输入法高度 public KeyboardLayout(Context context) { this(context, null, 0); } public KeyboardLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public KeyboardLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // 监听布局变化 getViewTreeObserver().addOnGlobalLayoutListener(new KeyboardOnGlobalChangeListener()); } private class KeyboardOnGlobalChangeListener implements ViewTreeObserver.OnGlobalLayoutListener { int mScreenHeight = 0; private int getScreenHeight() { if (mScreenHeight > 0) { return mScreenHeight; } mScreenHeight = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay().getHeight(); return mScreenHeight; } @Override public void onGlobalLayout() { Rect rect = new Rect(); // 获取当前页面窗口的显示范围 ((Activity) getContext()).getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); int screenHeight = getScreenHeight(); int keyboardHeight = screenHeight - rect.bottom; // 输入法的高度 boolean isActive


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭