【问题标题】:Android - Adding custom Modifiers in jetpackAndroid - 在 jetpack 中添加自定义修饰符
【发布时间】:2023-01-03 21:26:07
【问题描述】:

我想添加一些语义

contentDescription = "SomeID"
testTag = "SomeID"

一些 UI 元素

目前的做法是这样的

modifier = Modifier.padding(top = 10).semantics {
    testTag = "SomeID"
    contentDescription = "SomeID"
},

如何编写一个自定义扩展来接收输入数据并将其分配给语义

modifier = Modifier.padding(top = 10).addSemantics(id = "SomeID"),

【问题讨论】:

  • 请注意,contentDescription 应该是解释 UI 元素角色的人类可读字符串。通过 TalkBack 和其他辅助技术向用户读出内容描述。它不应该是一个标识符。话虽这么说,已经写了很多关于创建自定义修饰符的文章,例如this Medium post

标签: android android-jetpack-compose jetpack


【解决方案1】:

你可以这样做

fun Modifier.customModifier(paddingValues: PaddingValues, description: String) = this.then(
    padding(paddingValues).semantics {
        testTag = description
        contentDescription = description
    }
)

当您希望您的 Modifier 具有内存或访问 Comopsable 范围以使用 LaunchedEffect 等时,您可以使用 composed 作为

fun Modifier.customModifierWithMemory(paddingValues: PaddingValues, description: String) =
    composed {
        LaunchedEffect(key1 = Unit){
            // Do something here
        }

        var memory by remember {
            mutableStateOf(0)
        }
        Modifier
            .padding(paddingValues)
            .semantics {
                testTag = description
                contentDescription = description
            }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2022-01-23
    • 2023-03-02
    • 2019-05-31
    相关资源
    最近更新 更多