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 开发环境
下一篇:
相关文章
-
无相关信息