素材巴巴 > 程序开发 >

Android 沉浸标题栏状态栏

程序开发 2023-09-07 17:06:13

首先设置状态栏透明 super.onCreate之后调用

    protected void requestTranslucentStatusBar() {Window window = getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(Color.TRANSPARENT);window.setNavigationBarColor(Color.TRANSPARENT);}

注意不要设置android:fitsSystemWindows="true" 或 setFitsSystemWindows(true)

不然根布局就填充了状态栏(约等于paddingTop="状态栏高度")

如果设置了就会是这样 根布局占用状态栏 而不是标题栏(原谅咱可爱的状态栏) 

布局代码就不贴了 不难写

 设置完状态栏透明就可以适配标题栏了 也不麻烦我已经写好了

/*** 标题适配状态栏 在进行此设置前需要将当前Activity的状态栏设置为透明** @param titleBar 标题布局*/public static void titleBarAdaptsToStatusBar(ViewGroup titleBar) {Context context = titleBar.getContext();//获取状态栏高度int statusHeight = 0;int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");if (resourceId > 0) {statusHeight = context.getResources().getDimensionPixelSize(resourceId);}//适配高度ViewGroup.LayoutParams params = titleBar.getLayoutParams();params.height += statusHeight;//模拟setFitsSystemWindows(ture)titleBar.setPadding(titleBar.getPaddingLeft(),titleBar.getPaddingTop() + statusHeight,titleBar.getPaddingRight(),titleBar.getPaddingBottom());}

调用

    @Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.root_layout);//状态栏透明requestTranslucentStatusBar();//标题栏适配状态栏ViewUtils.titleBarAdaptsToStatusBar(findViewById(R.id.setting_title_bar));initView();}

好了 效果图

 


标签:

上一篇: 配置ionic AngularJS cordova 开发环境 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。