我正在Jetpack Compose中构建一个可重用的Button组件,它基本上是Row
.按钮的左端应该有一个文本,右端应该有一个图标.它直接向前工作,如下所示:
@Composable
fun MyButton(
text: String,
modifier: Modifier = Modifier
) {
Button(
onClick = { /* */ },
modifier = modifier
) { // RowScope
Text(
text = text
)
Spacer(modifier = Modifier.width(8.dp))
Icon(
painter = painterResource(
id = android.R.drawable.ic_dialog_info
),
contentDescription = null
)
}
}
但是,如果应用固定宽度的按钮,则文本图标居中,而不在左/右端.
所以我试着在Text
的基础上加modifier = Modifier.weight(1F)
,这样它就会填满任何额外的空间.但这会导致没有固定宽度的按钮占用尽可能多的空间.
如何构建在两种情况下都有效的合成组件:定义宽度时和内容包装时?
我的屏幕布局:
@Composable
fun MyScreen() {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxSize()
) {
Spacer(modifier = Modifier.height(8.dp))
MyButton(
text = "variable width",
modifier = Modifier.wrapContentWidth()
)
Spacer(modifier = Modifier.height(8.dp))
MyButton(
text = "fixed width",
modifier = Modifier.width(300.dp)
)
}
}