【发布时间】:2022-01-05 17:46:45
【问题描述】:
几天前我遇到了一个问题,我的一部分视图被键盘重叠。
假设我们有 3 个不同的对话框(可以是任何内容),如下所示:
当我想写任何东西时,最后一个对话框被键盘覆盖:
而且没有办法看到用户写了什么。这是我的代码:
@Composable
fun BuildWordsView(navController: NavController, sharedViewModel: SharedViewModel) {
Column(
modifier = Modifier
.fillMaxWidth()
.background(PrimaryLight)
.fillMaxSize()
) {
BuildWordsScreenContents()
}
}
@Composable
fun BuildWordsScreenContents() {
Column(
Modifier
.fillMaxSize()
.padding(all = 16.dp)
) {
val inputBoxModifier = Modifier
.clip(RoundedCornerShape(10.dp))
.background(Primary)
.weight(12f)
.wrapContentHeight()
InputBlock("Dialog1", inputBoxModifier)
Spacer(Modifier.weight(1f))
InputBlock("Dialog2", inputBoxModifier)
Spacer(Modifier.weight(1f))
InputBlock("Dialog3", inputBoxModifier)
}
}
@Composable
fun InputBlock(dialogText: String, inputBlockModifier: Modifier) {
Column(modifier = inputBlockModifier) {
Text(
dialogText,
fontSize = 30.sp,
textAlign = TextAlign.Center,
modifier = Modifier
.fillMaxWidth()
.wrapContentSize(Alignment.Center)
)
var text by remember { mutableStateOf("") }
TextField(
value = text,
modifier = Modifier
.fillMaxWidth()
.wrapContentSize(Alignment.Center),
onValueChange = { text = it },
label = { Text("Label") }
)
}
}
这个问题似乎与我的相似,但答案会修改我想要避免的视图内容:
Software keyboard overlaps content of jetpack compose view
现在我想出了如何解决这个问题,并分享我的方法作为答案
【问题讨论】:
-
您不应仅仅因为当前答案不适合您而创建其他问题。你应该在那里留下你自己的答案。
-
@PhilipDukhov 它没有回答我的问题,我提到了它。请仔细阅读我的问题。主要区别在于我不想创建可滚动布局,而是保持原样(但是我将其用作技巧)。此外,在我看来,我没有显示任何列表。那是完全不同的问题
-
它并没有真正的区别,你的答案没有在this answer 或伴奏文档中提到。另外,如果您必须使用可滚动,那么您一开始没有使用它有什么不同?任何正在寻找答案的人都会通过原始标题找到它,并且将有完整的信息来解决它。
标签: android android-layout android-jetpack-compose jetpack-compose-accompanist