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

我的上一篇文章:设置DialogFragment全屏显示 可以设置对话框的内容全屏显示,但是存在在某些机型上顶部的View被状态栏遮住的问题。经过测试,发现了一种解决办法,在DialogFragment的onCreateView()中添加一个布局监听器:

站在用户的角度思考问题,与客户深入沟通,找到相山网站设计与相山网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、做网站、企业官网、英文网站、手机端网站、网站推广、主机域名、虚拟空间、企业邮箱。业务覆盖相山地区。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ...
    //此处rootView是对话框的顶层View
    rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int[] location = new int[2];
            rootView.getLocationOnScreen(location);
            int y = location[1];
            if (y == 0) {
                //此处的topMarginView是被状态栏覆盖的View
                ViewGroup.MarginLayoutParams params
                        = (ViewGroup.MarginLayoutParams)topMarginView.getLayoutParams();
                params.topMargin += BarUtils.getStatusBarHeight();
                topMarginView.setLayoutParams(params);
                rootView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        }
    });
}

这种方法是通过监听对话框内容布局顶层View在屏幕中的位置来解决的,如果顶层View在屏幕中的y位置为0,则表示其已经被状态栏所遮住,然后将被遮住的View向下移动状态栏的高度即可。

这种方式显然不够优雅,如果读者能有更好的方法,欢迎留言。

本文地址,如有更多疑问,请参考我的其它Android相关博客:我的博客地址


当前题目:Android开发-解决DialogFragment在全屏时View被状态栏遮住的问题
文章位置:http://hxwzsj.com/article/jdciej.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 定制网站建设多少钱 高端品牌网站建设 重庆网站建设 成都品牌网站建设 古蔺网站建设 企业网站设计 企业网站设计 成都网站设计 网站制作公司 网站建设 重庆手机网站建设 移动网站建设 成都网站建设 成都网站建设 重庆企业网站建设 成都做网站建设公司 成都企业网站制作 成都网站建设 手机网站制作 成都商城网站制作 成都网站设计 定制网站设计