码迷,mamicode.com
首页 > 移动开发 > 详细

Android状态栏与布局重叠解决方案

时间:2019-12-02 11:56:03      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:add   window   private   blank   获得   linear   http   ref   fragment   

问题起因:

同组的同事将项目全局设置成了沉浸式,对于我这个半路过来开发的人 可真是头疼呵~

没办法,那就我自己添加一个头吧。也可以在布局中取消沉浸式,不过我这个是在fragment中,为了不修改之前的代码,只能做此骚操作了。

 

代码如下:
1、获取状态栏的高度。

 private int getStatusBarHeight(Context context) {
        // 获得状态栏高度
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        return context.getResources().getDimensionPixelSize(resourceId);
    }

2、为parentview添加一个状态栏高度的textview。

 TextView textView = new TextView(getContext());
  textView.setBackground(getResources().getDrawable(R.color.white));
  LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(getContext()));
  textView.setLayoutParams(layoutParams);
  llLayout.addView(textView, 0);

 

~~偶然看到一篇博客上写的,为布局设置距离顶部的高度,实现方式与上文类似,不过是在activity中重写onWindowFocusChanged()方法。

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

这种方式好像也ok.

参考博文地址:

https://blog.csdn.net/longxuanzhigu/article/details/77977835

 

Android状态栏与布局重叠解决方案

标签:add   window   private   blank   获得   linear   http   ref   fragment   

原文地址:https://www.cnblogs.com/fangg/p/11969567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!