Compose(?/N) - 微件
微件
微件也是组合函数,而不是以对象的形式提供。通过自定义的组合函数排列微件,并将数据更新到微件上。
文本 Text
Text( onTextLayout = { }, //计算布局时回调 |
图片 Image
Image( .border(2.dp, color = Color.Red, shape = CircleShap) //边框 |
//使用coil加载网络图片 AsyncImage( |
容器 Surface
对内容进行装饰。
fun Surface( onClick: () -> Unit, //点击回调 modifier: Modifier = Modifier, shape: Shape = RectangleShape, //形状 color: Color = MaterialTheme.colors.surface, //背景色(默认是主题中的surface颜色) contentColor: Color = contentColorFor(color), //内容主色 border: BorderStroke? = null, //边框粗细和颜色 elevation: Dp = 0.dp, //高度(阴影效果) shadowElevation = 0.dp, //阴影大小 tonalElevation = 0.dp, //当color=ColorScheme.surface时,值越大,浅色主题越深,深色主题越浅 content: @Composable () -> Unit ) |
按钮 Button
fun Button( onClick = { } //点击回调 modifier: Modifier = Modifier, enabled = true, //是否启用 interactionSource = remember { MutableInteractionSource() }, elevation = ButtonDefaults.elevation(), //Z轴上的高度 shape = MaterialTheme.shapes.small, //形状(RoundedCorner圆角矩形、Circle圆形、CutCorner切角) border = null, //外边框(Border(size: Dp, color: Color)) colors = ButtonDefaults.buttonColors( //颜色(还有textButtonColors、outlineButtonColors) containerColor = Color.Yellow, contentColor = Color.Red, disabledContainerColor = Color.Black, disabledContentColor = Color.Green ), contentPadding = ButtonDefaults.ContentPadding, content: @Composable RowScope.() -> Unit ) |
OutLinedButton:带外边框。 TextButton:普通的Button背景色是主题颜色,这个默认是透明 |
分割线 Divider
fun Divider( modifier: Modifier = Modifier, color: Color = MaterialTheme.colors.onSurface.copy(alpha = DividerAlpha), //分割线颜色 thickness: Dp = 1.dp, //分割线厚度(默认使用1dp,使用Dp.Hairline会产生一个单像素的分隔线与屏幕密度无关) startIndent: Dp = 0.dp //该行的起始偏移,默认情况下没有偏移。 ) |
间隔 Spacer
一个空白区域,使用Modifier.width.height.size来设置大小。
fun Spacer(modifier: Modifier) |
列表 LazyColumn、LazyRow
不像 RecyclerView 有回收机制,而是在滚动时渲染新的,但相比实例化View,渲染效率更高。