测试 SDK Version = 28
覆写Fragment的onStart()方法:
上面的方法可以成功设置Dialog为全屏,但是如果在全屏的Dialog顶部有View的情况下,在某些机型View会被状态栏遮住(比如三星S9),这时需要一些特殊的设置来处理,可以参考我的文章: 解决DialogFragment在全屏时View被状态栏遮住的问题
本文原始地址 ,如有更多疑问,请参考我的其它Android相关博客: 我的博客地址
项目中,只允许一个界面在横屏的时候,显示是全屏的,竖屏切换回来的时候又需要显示状态栏,所以需要监听横竖屏的状态,还要修改状态栏的隐藏与显示,如下代码:[java] view plain copy print?
/**
* 添加横竖屏监听,隐藏图形的菜单控件,2015年11月12日10:15:00:qiulinhe
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig)
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// // 设置全屏
WindowManager.LayoutParams lp = getActivity().getWindow()
.getAttributes()
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN
getActivity().getWindow().setAttributes(lp)
getActivity().getWindow().addFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
pricemenu.setVisibility(View.VISIBLE)
chart_btn.setVisibility(View.GONE)
user_status_bar.setVisibility(View.GONE)
// chart_btn.setVisibility(View.VISIBLE)
由于产品需求 , 要将一级页面的5个Fragment设置不一样颜色的状态栏然后我对着网上的博文抄了一遍 ,发现兼容问题很差 , 要么就是顶部的状态栏没有实现全屏 , 要么就是底部的虚拟按钮遮挡导航栏(华为手机和小米手机), 最后自定义主题和设置xml布局顶部高度来解决了这个问题解决方案:
第一步.在values的styles中自定义主题:
第二步.创建values-v19文件夹和styles.xml:
第三步.创建values-v21文件夹和styles.xml:
第三步.引用主题:
第四步.Fragment 状态栏填充颜色:(如果一节界面的头部是轮播图直接预留20dp的高度)
不设置预留高度,状态栏会和toolbar叠加在一起 (状态栏在toolbar上方)
运行后效果图如下:
轮播图在顶部的时候直接预留状态栏的高度即可:
指定颜色的界面设置多一层有颜色的View:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)