Android -在jetpack中添加自定义修改器

hgc7kmma  于 2023-01-03  发布在  Android
关注(0)|答案(1)|浏览(169)

我想补充一些语义

contentDescription = "SomeID"
testTag = "SomeID"

到某些UI元素
目前的做法是这样的

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

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

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

lb3vh1jj1#

你可以这样做

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

当你希望你的修改器有内存或访问可兼容作用域来使用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
            }
    }

相关问题