compose之沉浸式(侵入式)狀態(tài)欄

啊哈,這里實際上沒說沉浸式...奈何關(guān)鍵詞是這個

compose 版本使用最新的1.2版本

  1. 在setContent之前使用
    WindowCompat.setDecorFitsSystemWindows(window,false)
    讓內(nèi)容顯示在系統(tǒng)欄的后面,也就是顯示在狀態(tài)欄和導航欄的后面
  2. 設(shè)置為系統(tǒng)狀態(tài)欄為透明
    我們導入
    implementation "com.google.accompanist:accompanist-systemuicontroller:$accompanist_version"
    在需要的地方使用systemUiController,設(shè)置狀態(tài)欄為透明色,setStatusBarColor的參數(shù)2可以設(shè)置狀態(tài)欄上圖標的是否為暗色
val systemUiController = rememberSystemUiController()
LaunchedEffect(key1 = Unit) {
        systemUiController.setStatusBarColor(Color.Transparent)
}
  1. 對底部內(nèi)容侵入系統(tǒng)欄后的重疊部分進行處理
    對于底部導航欄 我們使用Modifier.navigationBarsPadding()
BottomNavigation(
                backgroundColor = MaterialTheme.colors.surface,
                modifier = Modifier.navigationBarsPadding()
            )

對于頂部,我這里是單獨抽取的公共部分,所以就使用增加一個狀態(tài)欄高度的方式來適配

  • 獲取狀態(tài)欄高度
val statusBarHeightDp = LocalDensity.current.run {
        WindowInsets.statusBars.getTop(this).toDp()
    }
  • 獲取狀態(tài)欄的高度還可以使用
val statusBarHeightDp = with(LocalContext.current){
        var height = 0
        val resourcesId = resources.getIdentifier("status_bar_height", "dimen", "android")
        if(resourcesId>0) {
            height = resources.getDimensionPixelSize(resourcesId)
        }
        with(LocalDensity.current) {
            height.toDp()
        }
    }
  • 抽取的topAppBar代碼為
@Composable
fun TopAppBar(content: @Composable () -> Unit) {

    val systemUiController = rememberSystemUiController()
    LaunchedEffect(key1 = Unit) {
        systemUiController.setStatusBarColor(Color.Transparent)
    }

    //標題欄高度
    val appBarHeight = 56.dp

    //狀態(tài)欄高度
    val statusBarHeightDp = LocalDensity.current.run {
        WindowInsets.statusBars.getTop(this).toDp()
    }

    Row(
        modifier = Modifier.background(
            brush = Brush.linearGradient(
                listOf(
                    Blue700,
                    Blue200
                )
            )
        )
            .fillMaxWidth()
            .height(appBarHeight + statusBarHeightDp)
            .padding(top = statusBarHeightDp),
        horizontalArrangement = Arrangement.Center,
        verticalAlignment = Alignment.CenterVertically
    ) {
        content()
    }
}

@Preview
@Composable
fun TopAppBarPreview() {
    TopAppBar {
        Text(text = "標題")
    }
}

topAppBar效果為

WX20220925-185903@2x.png

整體效果為:


WX20220925-192621@2x.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末子巾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子楷掉,更是在濱河造成了極大的恐慌汽烦,老刑警劉巖萝风,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讼渊,死亡現(xiàn)場離奇詭異议忽,居然都是意外死亡迫筑,警方通過查閱死者的電腦和手機引润,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門巩趁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人椰拒,你說我怎么就攤上這事晶渠。” “怎么了燃观?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵褒脯,是天一觀的道長。 經(jīng)常有香客問我缆毁,道長番川,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任脊框,我火速辦了婚禮颁督,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浇雹。我一直安慰自己沉御,他們只是感情好,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布昭灵。 她就那樣靜靜地躺著吠裆,像睡著了一般伐谈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上试疙,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天诵棵,我揣著相機與錄音,去河邊找鬼祝旷。 笑死履澳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的怀跛。 我是一名探鬼主播距贷,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敌完!你這毒婦竟也來了储耐?” 一聲冷哼從身側(cè)響起羊初,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤滨溉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后长赞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晦攒,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年得哆,在試婚紗的時候發(fā)現(xiàn)自己被綠了脯颜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贩据,死狀恐怖栋操,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饱亮,我是刑警寧澤矾芙,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站近上,受9級特大地震影響剔宪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壹无,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一葱绒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斗锭,春花似錦地淀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽她倘。三九已至,卻和暖如春作箍,著一層夾襖步出監(jiān)牢的瞬間硬梁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工胞得, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荧止,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓阶剑,卻偏偏與公主長得像跃巡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牧愁,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容