Age*_*ntP 18 android android-jetpack-compose
所以我的项目中有这个可组合项......
@Composable
private fun ShowDialog() {
var showText by remember { mutableStateOf(false) }
val text = if (showText) {
"Hide Text"
} else {
"Show Text"
}
Dialog(onDismissRequest = { }) {
Card(modifier = Modifier.padding(15.dp)) {
Column(modifier = Modifier.padding(15.dp)) {
AnimatedVisibility(visible = showText) {
Text(
text = "Here is the show text sample",
modifier = Modifier.padding(5.dp),
style = MaterialTheme.typography.body1,
color= Color.Black
)
}
Button(onClick = { showText = !showText }) {
Text(text = text)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您已经阅读了代码,您可能会明白它应该做什么。即它基本上是一个带有一个文本和下面一个按钮的对话框。当用户单击按钮时,按钮上方的文本将切换其可见性。
但代码的问题是,当我单击按钮时,文本出现,但按钮不可见,换句话说,文本占据空间并将按钮推到下面。但本例中的容器卡或列并没有扩展其高度。
它应该像那样工作吗?或者这是一个错误?
我尝试animateContentSize()了一下Column,Card但没有成功。并在 StackOverflow 上检查了类似的问题,但没有找到任何有用的信息。
Age*_*ntP 36
幸运的是,我找到了这个问题的临时工作答案,
我们需要使用的只是DialogProperties(usePlatformDefaultWidth = false)作为对话框的属性传递parameter。这将使对话框像这样调整大小
@Composable
private fun ShowDialog() {
var showText by remember { mutableStateOf(false) }
val text = if (showText) {
"Hide Text"
} else {
"Show Text"
}
Dialog(
onDismissRequest = { },
properties = DialogProperties(usePlatformDefaultWidth = false)
) {
Card(
modifier = Modifier
.padding(15.dp)
.wrapContentWidth()
.animateContentSize()
) {
Column(modifier = Modifier.padding(15.dp).fillMaxWidth(1f)) {
AnimatedVisibility(visible = showText) {
Text(
text = "Sample",
modifier = Modifier
.padding(5.dp)
.fillMaxWidth(1f),
style = MaterialTheme.typography.body1,
color = Color.Black
)
}
Button(onClick = { showText = !showText }) {
Text(text = text)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:它使用@ExperimentalComposeUiApi
此 API 是实验性的,将来可能会发生变化。
| 归档时间: |
|
| 查看次数: |
5471 次 |
| 最近记录: |