Android SystemBar各种风格案例:
隐藏Status Bar
StatusBar显示状态:
StatusBar隐藏状态:
在Android 4.0和更低版本下:
通过Theme主题来直接控制应用程序的StatusBar:
<application
...
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
...
</application>
或者,在onCreate()中通过WindowManager设置FLAG_FULLSCREEN标示来实现。注意点:setContentView之前写入。
class MainActivity : AppCompatActivity(), View.OnClickListener {
private var tag = MainActivity::class.java.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (Build.VERSION.SDK_INT<16){
setSystemBarOnLowerVersion()
}
setContentView(R.layout.activity_main)
}
/**
* 在4.0 及其以下,设置StatusBar
*/
fun setSystemBarOnLowerVersion(){
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)
}
}
更好的做法是使用 FLAG_LAYOUT_IN_SCREEN
来实现相同效果,还能预防当Statusbar显示与隐藏导致界面布局重新计算大小。
在Android 4.1和更高版本下:
在Android4.1及其以上版本,使用setSystemUiVisibility()
来控制UI flag,比使用WindManger flag更容易控制。
/**
* 全屏,会隐藏StatusBar
*/
var action_hide_status_bar = View.SYSTEM_UI_FLAG_FULLSCREEN
/**
* StatusBar正常隐藏的风格
*/
fun setStatusNormalStyle(window: Window) {
var flag = action_hide_status_bar
window.decorView.systemUiVisibility = flag
}
浮层效果:确保StatusBar浮在界面布局之上
/**
* 全屏,会隐藏StatusBar
*/
var action_hide_status_bar = View.SYSTEM_UI_FLAG_FULLSCREEN
/**
* 系统4.1或者更高版本,可以使StatusBar浮在内容上面,
*
* 与 View.SYSTEM_UI_FLAG_FULLSCREEN效果类似
*/
var action_hide_status_bar_float = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
/**
* 与SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION或者SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
* 结合使用,确保布局稳定
*/
var action_stable = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
/**
* StatusBar浮层隐藏的风格
*/
fun setStatusFloatStyle(window: Window) {
var flag = action_hide_status_bar or action_hide_status_bar_float or action_stable
window.decorView.systemUiVisibility = flag
}
使用View.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
和View.SYSTEM_UI_FLAG_LAYOUT_STABLE
,确保StatusBar能够浮在界面布局之上,也不会产生界面兼容问题。
效果如下:
本项目案例:https://github.com/13767004362/ManageSystemUIDemo
参考资源: