一般 *android:windowSoftInputMode="adjustResize" *就能解决软键盘遮住输入框的问题,但是当Activity设为Full Screen这个设置就无效了。

下面这个类就能解决这个问题:

public class AndroidBugWorkaround {

// For more information, see https://code.google.com/p/android/issues/detail?id=5497

// To use this class, simply invoke assistActivity() on an Activity that already has its content view set.

public static void assistActivity (Activity activity) {

new AndroidBugWorkaround(activity);

}

private View mChildOfContent;

private int usableHeightPrevious;

private FrameLayout.LayoutParams frameLayoutParams;

private AndroidBugWorkaround(Activity activity) {

FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);

mChildOfContent = content.getChildAt(0);

mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

public void onGlobalLayout() {

possiblyResizeChildOfContent();

}

});

frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();

}

private void possiblyResizeChildOfContent() {

int usableHeightNow = computeUsableHeight();

if (usableHeightNow != usableHeightPrevious) {

int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();

int heightDifference = usableHeightSansKeyboard - usableHeightNow;

if (heightDifference > (usableHeightSansKeyboard/4)) {

// keyboard probably just became visible

frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;

} else {

// keyboard probably just became hidden

frameLayoutParams.height = usableHeightSansKeyboard;

}

mChildOfContent.requestLayout();

usableHeightPrevious = usableHeightNow;

}

}

private int computeUsableHeight() {

Rect r = new Rect();

mChildOfContent.getWindowVisibleDisplayFrame(r);

return r.bottom;

}

}

只需要在Activity中的 onCreate() 方法中 setContentView() 后面添加

AndroidBugWorkaround.assistActivity(this);即可。

备注:computeUsableHeight() 方法返回值根据fitSystemWindows的设置值来决定,如果布局中fitsSystemWindows="false", return r.bottom; 如果fitsSystemWindows="true", return (r.bottom - r.top);

android虚拟键盘挡住布局,Android全屏时软键盘遮住输入框修改布局解决方案相关推荐

  1. android 按键铺满屏幕,安卓全屏状态下键盘充满屏幕留不出ui控件的解决办法附edittext和键盘的属性...

    1.我们先看看常用和不常用的属性值(Edittext) android:inputType参数类型说明 android:inputType="none"--输入普通字符 andro ...

  2. 一加android8稳定版,一加5T获Android 8.1稳定版升级 全屏手势代替虚拟按键

    原标题:一加5T获Android 8.1稳定版升级 全屏手势代替虚拟按键 虽然一加手机的新旗舰一加6即将发布,但是官方也没有忘记老用户.5月9日夜间,一加5T迎来了稳定版固件更新,除了核心升级为And ...

  3. Android 点击图片放大至全屏 再次点击关闭过度动画 Shared Element效果(共享元素效果)

    Android 点击图片放大至全屏 再次点击关闭过度动画 最近项目需要给用户一个体验优化,各种查阅,然后改了很多地方,类似于图片的点击预览,消息列表的点击流畅过渡. Shared Element效果( ...

  4. Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题

    Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题 参考文章: (1)Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题 ...

  5. android 代码设置dialog 全屏,Android里把Dialog设置为全屏的方法

    Android里把Dialog设置为全屏的方法 有的时候我们需要把Dialog设置为全屏,于是我们想到了如下的办法: //设置成全屏 LinearLayout.LayoutParams p = new ...

  6. android 点击图片动画效果,Android仿微信图片点击全屏效果

    废话不多说,先看下Android图片点击全屏效果: 先是微信的 再是模仿的 先说下实现原理,再一步步分析 这里总共有2个Activity一个就是主页,一个就是显示我们图片效果的页面,参数通过Inten ...

  7. Android WebView播放视频(包括全屏播放)

    最近项目开发中用到了WebView播放视频的功能,总结了开发中犯过的错误,这些错误在开发是及容易遇到的,所以我这里总结了一下,希望大家看到后不要再犯类似的错误,尽可能提高开发效率: 这个Demo我这里 ...

  8. Android手动控制软键盘的开启和关闭,判断软键盘是否显示;

    工具类,拿走就能用: import android.annotation.TargetApi; import android.app.Activity; import android.content. ...

  9. android仿微信、QQ等聊天界面,实现点击输入框弹出软键盘、点击其他区域收起软键盘,默认滑动至最低端

    如图所示,点击输入框及选择图片和发送按钮时软键盘显示且不消失,点击其他区域,则隐藏软键盘. 主要代码如下: override fun dispatchTouchEvent(ev: MotionEven ...

最新文章

  1. 计算机组成原理 — CPU — 主存访问
  2. 以无代码的方式将Form打印内容转成生成PDF文件
  3. CTF(Pwn) Rop + ret2libc 题型 常规解法思路 (初级)
  4. 经典卷积网络进阶--ResNet详解
  5. python 多文件知识
  6. [分布式] ------ 全局唯一id生成之雪花算法(Twitter_Snowflake)
  7. forEach for 循环
  8. FFmpeg进行推流的两种方法
  9. matlab经纬度距离方位角,计算经纬度、距离、方位角(示例代码)
  10. 家用计算机的计算速度,计算机CPU运算速度是多少
  11. 求函数:x的n次方(函数递归)
  12. Sign In with Apple - 使用苹果账号登录你的应用
  13. 苹果电脑切换任务管理器快捷键
  14. 常用ruby gem
  15. subprocess模块call的用法
  16. 解决夜神模拟器连接eclipse的问题
  17. 【教程、无技术含量】简单的油猴脚本编写教程
  18. 安卓平台Flutter启动过程全解析
  19. 秒杀ecshop的前台写shell 0day
  20. springboot毕设项目二手书交易平台95q22(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. Linux系统Git环境配置
  2. 联机共享 Windows Live Writer 草稿
  3. python3 计算时间间隔
  4. linux 网络错误 nf_conntrack: table full, dropping packet. 路由跟踪表满
  5. ndpi 流量协议分析
  6. metasploit 快速入门(二)信息收集和扫描-续
  7. python subprocess模块 命令执行
  8. docker错误:Error response from daemon: Cannot start container
  9. 《UNIX环境编程》第十六章--网络IPC:套接字
  10. NTP时间同步服务器报错:no server suitable for synchronization found