在TopAppBar中设置TextField后,我遇到了两个问题:
1.键盘折叠后文本字段获得焦点。当文本字段没有被触发时,它看起来像图片1。当我按下它(它是焦点)时,键盘显示出来,tesxfield看起来像图片2。如果我手动折叠键盘,文本字段保持图片2的外观。我希望它能回到图片1的外观。
1.当我切换到一个新的屏幕时,编辑光标(大头针形状的东西)仍然在屏幕上。pic3显示光标。颜色与背景相同。我将改变它。当我切换到另一个屏幕时,它仍然在那里,如pic 4所示。它只持续一瞬间,然后消失。但它在那里。
对于第一个问题,我想我一定是漏掉了一些参数。对于第二个问题,我没有任何想法。这是一个编写错误吗?
@Composable
fun SearchBar() {
var text by remember { mutableStateOf("") }
Box(
modifier = Modifier
.height(70.dp)
.fillMaxWidth()
.background(MaterialTheme.colors.primary),
contentAlignment = Alignment.BottomCenter
) {
TextField(
leadingIcon = {
Icon(imageVector = Icons.Default.Search, contentDescription = null)
},
placeholder = {
Text(
"find more...",
color = Color.White
)
},
shape = RectangleShape,
colors = TextFieldDefaults.textFieldColors(
textColor = Color.White,
backgroundColor = MaterialTheme.colors.primary,
focusedIndicatorColor = Color.White,
unfocusedIndicatorColor = Color.Gray,
disabledIndicatorColor = Color.Black
),
value = text,
singleLine = true,
onValueChange = { text = it },
modifier = Modifier
.padding( bottom = 10.dp)
.size(360.dp,60.dp),
)
}
}
1条答案
按热度按时间58wvjzkj1#
好的,谢谢你的额外细节,试试这个!
对于第1)部分,可以将以下代码添加到TextField以删除焦点:
注意Done选项会在键盘上显示一个小复选框,你可以用它来关闭键盘,然后这段代码会移除焦点。我希望在手动关闭键盘时也会调用
onDone
。在第2部分中,我会重复使用这种方法,这听起来像是一个bug,但基本上我会尝试在离开屏幕之前,从任何你正在做导航的地方调用
LocalFocusManager.current.clearFocus(force = true)
,以迫使这个东西消失。希望这有帮助!