如何在android jetpack撰写中创建自定义形状?



如何制作这样的形状?

我看到有两种方法可以做到这一点:

  1. 你可以用画布创建@Composable功能(官方指南,文章在Medium上),如果你需要使用这个文件夹形状的标签
// Usage:
@Composable
fun Somewhere() {
FolderLikeCard(
topTailContent = {
// for example, your tab will just be, without content, only for shape
Box(modifier = Modifier.size(64.dp, 12.dp))
},
mainContent = {
// main content
}
)
}

// Implementation:
@Composable
fun FolderLikeCard(
topTailContent: @Composable () -> Unit,
mainContent: @Composable () -> Unit
) {
val cornerSize = 4.dp // for example
Column {
Row {
Spacer(modifier = Modifier.weight(1f))
Box {
Canvas {
TODO("draw with help of links above tab's outline (using drawArc maybe)")
}
Box(
modifier = Modifier.padding(left = cornerSize, top = cornerSize, right = cornerSize),
content = topTailContent
)
}
}
Box {
Canvas {
TODO("draw main part outline")
}
Box(
modifier = Modifier.padding(left = cornerSize, bottom = cornerSize, right = cornerSize),
content = mainContent
)
}
}
}

+我觉得它可以在Modifier.drawBehind方法的帮助下进行重构

  1. 创建一个实际的形状,在Modifier.background(color = yourColor, shape = FolderLikeShape(tabHeight, tabWidth, ...))方法中使用它,链接到我不久前读过的文章,+链接问题有帮助,但我不知道到目前为止你怎么能把内容放在那里,如果你需要它,那么我希望下面的评论员能帮助你。

最新更新