当我们通过下面代码:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

设置状态栏透明,当界面存在EditText时,在activity里面设置windowSoftInputMode:adjustResize 无效,软键盘依然会遮挡住EditText的焦点位置。
通过下面方式可以解决,大致解决思路是,通过监听视图树的变化,然后把界面滑动到软键盘的上面。

public class WindowSoftModeAdjustResizeExecutor {// 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.// CREDIT TO Joseph Johnson (http://stackoverflow.com/users/341631/joseph-johnson) for publishing the original Android solution on stackoverflow.compublic static void assistActivity(Activity activity) {new WindowSoftModeAdjustResizeExecutor(activity);}private View mChildOfContent;private int usableHeightPrevious;private FrameLayout.LayoutParams frameLayoutParams;private WindowSoftModeAdjustResizeExecutor(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;frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;mChildOfContent.requestLayout();usableHeightPrevious = usableHeightNow;}}private int computeUsableHeight() {Rect r = new Rect();mChildOfContent.getWindowVisibleDisplayFrame(r);if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {return (r.bottom - r.top);}return r.bottom;}
}

然后在setContentView()方法之后调用WindowSoftModeAdjustResizeExecutor.(this) 就ok了。

透明状态栏导致windowSoftInputMode:adjustResize失效问题相关推荐

  1. 关于Android透明状态栏的使用以及与软键盘冲突(导致SrollView不能滑动)的解决办法

    1.透明状态栏实在android4.4以上才有的新功能 (1)通过在style文件中设置 <item name="android:windowTranslucentStatus&quo ...

  2. android 透明状态栏方法及其适配键盘上推(一)

    android的状态栏(statusBar)版本的差异化比较大.在android 4.4 以上和5.x可以设置状态栏背景颜色,但是不可以设置状态栏中字和图标的颜色.而系统默认的statusbar的字体 ...

  3. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

  4. 混合开发Android FlutterActivity 的透明状态栏

    前言 我们知道,在纯flutter 的项目中,设置透明状态栏只需要在flutter 的入口处添加下面这段代码就可以, if (Platform.isAndroid) {//设置Android头部的导航 ...

  5. Android沉浸式状态栏(透明状态栏)最佳实现

    Android沉浸式状态栏(透明状态栏)最佳实现 在Android4.4之前,我们的应用没法改变手机的状态栏颜色,当我们打开应用时,会出现上图中左侧的画面,在屏幕的顶部有一条黑色的状态栏,和应用的风格 ...

  6. Android透明状态栏解决方案

    正所谓具体情况具体分析 方案一:纯色的透明状态栏 解决办法: 1.将需要透明的activity页面设置为全屏,状态栏变为透明: 在mainActivity中添加如下代码: //在setContentV ...

  7. Android App开发 教你分清“沉浸式”和“透明状态栏”

    首先科普下,什么是"沉浸式"和"透明状态栏"? 1. 大家平时看到一些App运行后,状态栏会变成半透明,或者颜色跟随App的标题栏变色,这种特性叫"T ...

  8. Android 沉浸式状态栏(QQ5.0透明状态栏的效果)

    大家注意一个问题: 魅族4.4系统,如果增加沉浸式状态栏,页面底部如果有按钮可能会被魅族的smbar遮挡,导致按钮不能被点击到的现象 看上面的这张图就是,魅族smatbar被隐藏后,挡住底部按钮,并且 ...

  9. Android全屏与透明状态栏

    前言 Android沉浸式与全屏是不一样的两种主题,接下来我们看看吧 Android实现全屏 通过主题属性来实现 <style name="FullScreenTheme"& ...

最新文章

  1. Java单例模式个人总结(实例变量和类变量)
  2. 4.9.3 方法注释
  3. 在linux中教你通过NFS实现文件共享
  4. 用递归方式实现二叉树先序、中序、后序遍历
  5. dp打开思路4:POJ1189 UVA12511 HDU2845 HBCPC K
  6. 编程体系结构(09):分布式系统架构
  7. Python中dataframe数据框中选择某一列非空的行
  8. 获取客户端网卡MAC地址和IP地址的几种方法(一)
  9. 浅谈Borg/YARN/Mesos/Torca/Corona一类系统
  10. 【心电信号】基于matlab小波变换心电信号去噪【含Matlab源码 956期】
  11. 完全免费软件开发论坛介绍
  12. 【散文】 漫步在春天
  13. 手把手实现MATLAB的CNN回归
  14. PID控制算法与参数整定,用这几招轻松搞定!
  15. Unity 模拟键盘按键
  16. Spark机器学习管道--中文翻译
  17. 车文化:1.BMW车型概览
  18. 看一遍就理解:group by 详解
  19. ChatGPT通过谷歌L3入职测试,拿到18万美元offer?程序员们该何去何从?
  20. php导航条css代码生成器,怎么使用css代码制作网站导航栏?(示例)

热门文章

  1. 操作系统(三)内存管理
  2. C++ STL之Vector
  3. Java集合(五):Set集
  4. 春招我借这份PDF的复习思路,论程序员成长的正确姿势
  5. ajax不支持post,AJAX不能正确发送POST变量
  6. JAVA List集合转Page(分页对象)
  7. odoo10 继承(扩展)、模块数据
  8. [ BZOJ 4668 ] 冷战
  9. 1、Linux命令随笔
  10. spring+log4j