跳转到内容

RecommendedPreference

RecommendedPreference 是独立的相关设置推荐卡片,对应 ColorOS 的 COUIRecommendedPreference(设置页底部的「你可能想找:」卡片)。卡片为 12dp 圆角容器(COUI couiRoundCornerM),填充 couiColorContainer4,内含一个次要色小标题和逐条可点击的文字行。行按下时显示标准 COUI 按压遮罩。

items 为空时不渲染任何内容,与 COUIRecommendedPreference.setData() 在列表为空时隐藏该偏好的行为一致。

引入

kotlin
import io.github.suqi8.coui.kmp.preference.RecommendedPreference
import io.github.suqi8.coui.kmp.preference.RecommendedItem
import io.github.suqi8.coui.kmp.preference.RecommendedPreferenceDefaults

基本用法

remember 块中构建条目列表以保持其在重组间稳定。像其他卡片块一样放置该卡片,例如加 16dp 水平外边距:

kotlin
val items = remember {
    listOf(
        RecommendedItem(text = "显示与亮度", onClick = { /* 跳转 */ }),
        RecommendedItem(text = "壁纸与个性化", onClick = { /* 跳转 */ }),
        RecommendedItem(text = "电池", onClick = { /* 跳转 */ })
    )
}

RecommendedPreference(
    title = "你可能想找:",
    items = items,
    modifier = Modifier.padding(horizontal = 16.dp)
)

属性

RecommendedPreference 属性

属性名类型说明默认值是否必须
titleString卡片标题文本-
itemsList<RecommendedItem>推荐条目;为空时不渲染-
modifierModifier应用于组件的修饰符Modifier
cornerRadiusDp卡片圆角半径RecommendedPreferenceDefaults.CornerRadius
colorsRecommendedPreferenceColors卡片颜色配置RecommendedPreferenceDefaults.recommendedPreferenceColors()
insideMarginPaddingValues卡片边缘与文字的水平间距RecommendedPreferenceDefaults.InsideMargin

RecommendedItem 属性

属性名类型说明默认值是否必须
textString行文本-
onClick(() -> Unit)?点击该行时的回调;null 时该行不可点击null

RecommendedPreferenceDefaults 对象

常量类型默认值说明
CornerRadiusDp12.dpCOUI couiRoundCornerM
InsideMarginPaddingValuesPaddingValues(horizontal = 16.dp)卡内文字缩进(COUI 32dp 减去 16dp 卡片外边距)
HeaderTopPaddingDp16.dpCOUI recommended_recyclerView_padding_top
HeaderBottomSpacingDp8.dpCOUI recommended_preference_list_item_head_bottom_margin
HeaderMinHeightDp20.dpCOUI recommended_preference_list_item_height_head
ItemVerticalPaddingDp10.dpCOUI recommended_preference_list_item_common_margin_vertical
BottomPaddingDp8.dpCOUI recommended_recyclerView_padding_bottom

recommendedPreferenceColors() 工厂方法

参数类型默认值
containerColorColorcouiColorContainer4(浅色 #0A000000 / 深色 #14FFFFFF,随主题自动切换)
titleColorColorCOUITheme.colorScheme.onSurfaceSecondary
itemColorColorCOUITheme.colorScheme.onSurface

进阶用法

自定义颜色

kotlin
RecommendedPreference(
    title = "你可能想找:",
    items = items,
    colors = RecommendedPreferenceDefaults.recommendedPreferenceColors(
        containerColor = COUITheme.colorScheme.surfaceContainer,
        itemColor = COUITheme.colorScheme.primary
    )
)

置于设置页底部

kotlin
LazyColumn {
    // ... 其他偏好设置卡片 ...
    item {
        RecommendedPreference(
            title = "你可能想找:",
            items = items,
            modifier = Modifier
                .padding(horizontal = 16.dp)
                .padding(bottom = 16.dp)
        )
    }
}

变更日志

基于 Apache-2.0 许可发布