我有一个TextFied Composable,包含KeyboardOptions
和KeyboardActions
。
@Composable
fun TodoInputText(...) {
val keyboardController = LocalSoftwareKeyboardController.current
TextField( ....
onValueChange = onTextChanged,
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {
onImeAction()
keyboardController?.hide()
}))}
TextField与Done Action一起工作,但每当TextField为空时,我需要禁用键盘上的Done ImeAction,如此GIF所示
我已经提取了一个状态来检查TextField是否为空。
@Composable
fun TodoItemEntryInput(...) {
//hold state for TextField
val (text, setText) = remember { mutableStateOf("") }
val isTextBlank = text.isNotBlank()
//declare lambda function submit that handles a submit event when done is pressed
val submitAction = { .... }
TodoItemInput(
text = text,
onTextChange = setText,
submitAction = submitAction,
)}
现在我的问题是,当文本为空时,如何使用isTextBlank
状态来禁用或灰显Done ImeAction。这是为了避免用户输入空白文本时的错误--我发现输入验证对于这种情况不是很理想。
3条答案
按热度按时间91zkwejq1#
您可以设置输入法的行动对文本的更改编辑文本
ztyzrc3y2#
如果值无效,我将
imeAction
设置为None
,如果值有效,则设置为Done/Go
。然后将该值插入TextField
中的keyboardOptions
祝你一切顺利
ffvjumwh3#
这是常规Android中的impossible,因此使用Jetpack Compose也无法解决此任务。
您所能做的就是检查
onDone
回调中的文本是否有效,如果有效则继续,如果无效则显示错误。