Jetpack Compose组件-列表项(ListItem)


Jetpack Compose组件-列表项(ListItem)

列表项(ListItem)

ListItem(小列表项)类似设置界面中的菜单项,有单行/两行/三行文本三种样式,可添加左侧图标,可设置右侧内容,通常是Icon、CheckBox 或 Switch。

ListItem左侧图标和右侧内容默认为上方对齐,要想居中对齐需要将左侧图标大小(size + padding)设置为40dpx56dp,右侧内容高度(height+ padding)设置为56dp。

@Composable
@ExperimentalMaterialApi
fun ListItem(
    // 修饰符
    modifier: Modifier = Modifier,
    // 左侧图标
    icon: (@Composable () -> Unit)? = null,
    // 副文本
    secondaryText: (@Composable () -> Unit)? = null,
    // 副文本是否单行显示
    singleLineSecondaryText: Boolean = true,
    // 显示在主文本上面的文本
    overlineText: (@Composable () -> Unit)? = null,
    // 设置右侧内容,通常是Icon、CheckBox 或 Switch
    trailing: (@Composable () -> Unit)? = null,
    // 主文本
    text: @Composable () -> Unit
): Unit
var switched by remember { mutableStateOf(false) }
val onSwitchedChange: (Boolean) -> Unit = { switched = it }
Column(modifier = Modifier.background(Color.LightGray)) {
    ListItem(
        text = { Text("text") },
        icon = {
            Icon(
                imageVector = Icons.Default.BrokenImage,
                contentDescription = null,
                modifier = Modifier
                    .padding(vertical = 16.dp, horizontal = 8.dp)
                    .size(24.dp)
            )
        },
        secondaryText = {
            Text("secondaryText")
        },
        overlineText = {
            Text("overlineText")
        },
        trailing = {
            Switch(
                checked = switched,
                onCheckedChange = null,
                modifier = Modifier
                    .padding(16.dp)
                    .size(24.dp)
            )
        },
        modifier = Modifier
            .background(Color.White)
            .toggleable(
                role = Role.Switch,
                value = switched,
                onValueChange = onSwitchedChange
            )
    )
}

文章作者: Vinx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Vinx !
 上一篇
Jetpack Compose实现滑块式标签tab Jetpack Compose实现滑块式标签tab
Jetpack Compose实现滑块式标签tab 1. 先完成一个基本的tab @Composable fun SliderTabs() { var selectedIndex by remember &#
下一篇 
Jetpack Compose组件-左右滑动删除(SwipeToDismiss) Jetpack Compose组件-左右滑动删除(SwipeToDismiss)
Jetpack Compose组件-左右滑动删除(SwipeToDismiss) 左右滑动删除(SwipeToDismiss) Divider是将列表和布局中的内容分组的细线。 @Composable @ExperimentalMa
  目录