顶部导航
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.xhkjedu.zxs_android.common.CommonTheme
@Composable public fun PageTopBar( title: String, showBack: Boolean = true, backAction: () -> Unit, content: @Composable BoxScope.() -> Unit ) { Box( modifier = Modifier .fillMaxWidth() .height(44.dp) .padding(start = 24.dp, end = 24.dp), ) { if (showBack) { Row( modifier = Modifier .align(Alignment.CenterStart) .clip(CommonTheme.CornerXs) .clickable { backAction() }, verticalAlignment = Alignment.CenterVertically ) { IconFont(icon = IconFont.IconFanhui2, size = 18f) Text("返回", fontSize = 18.sp) } } Text( title, modifier = Modifier.align(Alignment.Center), fontSize = 20.sp, color = Color.Black )
Box( modifier = Modifier .align(Alignment.CenterEnd), ) { content() }
} }
|
使用
1 2 3 4 5 6 7 8
| PageTopBar(title = "教材同步练", backAction = { navController.popBackStack() }) { Row(verticalAlignment = Alignment.CenterVertically) { Text("数学") IconFont(icon = IconFont.IconXiala) } }
|
页面外层布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| import androidx.annotation.DrawableRes import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.xhkjedu.zxs_android.common.ZTheme import com.xhkjedu.zxs_android.componts.common.ZSpaceVS import com.xhkjedu.zxs_android.componts.common.image.ZImgLocalBg
@Composable fun ZScreenOuterComp( @DrawableRes bg: Int, header: @Composable ColumnScope.() -> Unit, content: @Composable BoxScope.() -> Unit ) { Box(Modifier.fillMaxSize()) { Box(modifier = Modifier.fillMaxSize()) { ZImgLocalBg(bg) } Column( modifier = Modifier .statusBarsPadding() .navigationBarsPadding() .fillMaxSize() ) { header() ZSpaceVS() Box( modifier = Modifier .padding(horizontal = ZTheme.SpaceLr) .fillMaxWidth() .weight(1f) ) { content() } ZSpaceVS() } } }
|
注意
navigationBarsPadding 底部的边距在模拟器上是0.dp,我这在真机上是8.dp。