android:fitsSystemWindows属性的用法

android:fitsSystemWindows属性的用法

2023年7月15日发(作者:)

android:fitsSystemWindows属性的⽤法Android中fitsSystemWindows属性的⽤法总结fitsSystemWindows属性是我在学习沉浸式模式时候涉及到的⼀个知识点,因为涉及到Android不同版本间的区别,所以当时也是云⾥雾⾥的,所以今天特意整理⼀下这个属性。属性说明fitsSystemWindows属性可以让view根据系统窗⼝来调整⾃⼰的布局;简单点说就是我们在设置应⽤布局时是否考虑系统窗⼝布局,这⾥系统窗⼝包括系统状态栏、导航栏、输⼊法等,包括⼀些⼿机系统带有的底部虚拟按键。android:fitsSystemWindows=”true” (触发View的padding属性来给系统窗⼝留出空间)

这个属性可以给任何view设置,只要设置了这个属性此view的其他所有padding属性失效,同时该属性的⽣效条件是只有在设置了透明状态栏(StatusBar)或者导航栏(NavigationBar)此属性才会⽣效。注意: fitsSystemWindows只作⽤在Android4.4及以上的系统,因为4.4以下的系统StatusBar没有透明状态。应⽤场景在不同Android版本下,App状态栏和不同版本中系统本⾝的状态栏的适配;

兼容带有底部虚拟按键的⼿机系统。属性使⽤1、默认效果先贴⼀张未对系统状态栏和导航栏做透明设置时测试布局效果图:2、系统窗⼝透明后效果当设置了透明状态栏(StatusBar)和透明导航栏(NavigationBar)时效果图:透明状态栏代码设置://布局设置true//或者代码设置if (_INT >= N_) { getWindow().addFlags(_TRANSLUCENT_NAVIGATION);}透明导航栏代码设置://布局设置true//或者代码设置if (_INT >= N_) { getWindow().addFlags(_TRANSLUCENT_NAVIGATION);}如果有以上两种情况之⼀,我们的状态栏(StatusBar)或导航栏(NavigationBar)就会变成透明,并且布局会扩展到StatusBar或NavigationBar的位置。注意:这⾥有个关于状态栏和导航栏透明样式的问题,这个是受Android版本决定,4.4以下⽆透明效果,4.4~5.0是全透明,5.0以上是半透明。我使⽤的是5.0以上的版本模拟器进⾏测试的,所以是半透明。3、设置fitsSystemWindows属性后效果现在就到了我们关键的fitsSystemWindows属性登场了,只要在根布局中加上android:fitsSystemWindows=”true”效果如下图:设置了android:fitsSystemWindows=”true”属性后针对透明的状态栏会⾃动添加⼀个值等于状态栏⾼度的paddingTop;针对透明的系统导航栏会⾃动添加⼀个值等于导航栏⾼度的paddingBottom贴上布局的代码: 追及附加⼀个获取状态栏StatusBar的和⼀个获取导航栏NavigationBar⾼度的java代码://返回值就是状态栏的⾼度,得到的值单位pxpublic float getStatusBarHeight() { float result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimension(resourceId); } return result;}

//返回值就是导航栏的⾼度,得到的值单位pxpublic float getNavigationBarHeight() { float result = 0; int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimension(resourceId); } return result;}

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689428463a246597.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信