第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Android 沉浸标题栏状态栏

Android 沉浸标题栏状态栏

时间:2021-05-08 06:55:31

相关推荐

Android 沉浸标题栏状态栏

首先设置状态栏透明 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();}

好了 效果图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。