Android状态栏与页面顶部内容重合解决方案

二进制吟游诗人
• 阅读 2707

在项目的开发过程中 , 发现创建activity界面后 , 界面顶部的返回按钮被状态栏遮挡住一部分 , 在点击返回的时候,很难触发点击事件,页面也不太美观,话不多说,直接上代码.

计算状态栏高度的工具类:

public class StatusBarUtil {

    //获取状态栏高度
    public static int getStatusBarHeight(Context context) {
        Class<?> c = null;
        Object obj = null;
        Field field = null;
        int x = 0, statusBarHeight = 0;
        try {
            c = Class.forName("com.android.internal.R$dimen");
            obj = c.newInstance();
            field = c.getField("status_bar_height");
            x = Integer.parseInt(field.get(obj).toString());
            statusBarHeight = context.getResources().getDimensionPixelSize(x);
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        return statusBarHeight;
    }

}

Android状态栏与页面顶部内容重合解决方案

在activity中重写onWindowFocusChanged()方法:

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        //设置第一个view距离状态栏的高度;
        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) rlLinearLayout.getLayoutParams();//rlLinearLayout为遮挡住的页面布局LinearLayout
        int top = StatusBarUtil.getStatusBarHeight(this);//获取状态栏高度
        lp.topMargin = top;
         rlLinearLayout.setLayoutParams(lp);
 }

Android状态栏与页面顶部内容重合解决方案

总结: 解决该问题的方案主要是:计算出状态栏的高度 , 然后用代码的形式将页面顶部布局向下移状态栏的高度 , 解决方案还是比较简单的.

以下是个人公众号,之后发布的文章会同步到该公众号,方便交流学习Android知识及分享个人爱好文章:

Android状态栏与页面顶部内容重合解决方案

Android状态栏与页面顶部内容重合解决方案

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
Spicy 修改代码 实现双屏显示以及鼠标键盘绑定
修改spicy.c staticSpiceWindow\create\_spice\_window(spice\_connection\conn,SpiceChannel\channel,intid,gintmonitor\_id){//注释掉的地方  就是隐藏菜单、工具栏和状态栏   gtk\_container\_
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Android Service详解
service作为四大组件值得我们的更多的关注在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意它的运行.在状态栏中的通知可能会显示当前的歌曲并且允许用户启动一个act
Stella981 Stella981
3年前
Android状态栏黑色字体
前言由于公司项目的欢迎页是白色的,,修改状态栏颜色后,导致状态栏的白色字体完全被覆盖了,联想到之前在QQ、UC等一些app上都见到过状态栏的字体是深色的,想着,,必定有解决的方案。于是,有了本篇blog。参考下面是我在网上找到的两篇文章1.白底黑字!Android浅色状态栏黑色字体模式(https://www.os
Stella981 Stella981
3年前
Framework7开发使用笔记
1、触发返回键的时候,获取当前页面内容myApp.getCurrentView()获取当前页面名字:myApp.getCurrentView().activePage.name2、关闭所以弹出层myApp.hidePreloader();3、JS代码执行返回ma
绣鸾 绣鸾
2年前
Bartender 4 for Mac菜单栏图标管理软件
Bartender4是一款用于管理macOS系统状态栏图标的软件。它允许你自定义状态栏图标的显示和排序,帮助你更好地组织和管理你在状态栏中使用的应用程序和工具。通过Bartender4,你可以隐藏或显示状态栏图标,以避免状态栏过多的图标拥挤在一起。你可以通
taskbuilder taskbuilder
8个月前
TaskBuilder系统标签栏和系统状态栏
TaskBuilder系统标签栏和系统状态栏使用TaskBuilder进行开发时,有一部分操作界面是以对话框的形式显示的,因为这些界面里要显示的内容相对比较少,例如创建各种资源文件的向导界面,而其他大部分功能的操作界面都是以标签页的形式显示在TaskBui
程序员一鸣 程序员一鸣
2个月前
鸿蒙开发:沉浸式效果实现
沉浸式效果实现后,一定要注意安全区域的内容避让,防止内容延伸后被导航条或者状态栏遮挡,具体是选择安全区域或者窗口管理方式,按照需求进行处理,如果仅仅是某个页面,直接安全区域即可。
GeorgeGcs GeorgeGcs
1星期前
【HarmonyOS】应用设置全屏和安全区域详解
【HarmonyOS】应用设置全屏和安全区域详解一、前言IDE创建的鸿蒙应用,默认采取组件安全区布局方案。顶部会预留状态栏区域,底部会预留导航条区域。这就是所谓的安全区域。如果不处理,界面效果很割裂。所以业内UI交互设计,都会设置应用为全屏布局。将页面绘制