gpt4 book ai didi

android - 防止键盘出现在 Jetpack Compose 应用程序中

转载 作者:行者123 更新时间:2023-12-04 23:51:55 25 4
gpt4 key购买 nike

我正在制作一个计算器来学习 Compose,所以我在屏幕上放置了自己的数字按钮,我想防止出现软键盘。
这是我的仓库:https://github.com/vitor-ramos/CalculadorCompose
我注意到在 TextFieldImpl.kt 中有一个显示键盘的修饰符,所以我尝试克隆代码并删除该行:keyboardController.value?.showSoftwareKeyboard()我知道复制这样的代码不是一个好主意,但我想试一试,但没有奏效。正如您在下面的原始代码中看到的,有一个 TODO 说它应该由 BaseTextField 处理,但我查看了它的代码并没有找到它显示或隐藏键盘的位置。

val textFieldModifier = modifier
.focusRequester(focusRequester)
.focusObserver { isFocused = it.isFocused }
.clickable(indication = null) {
focusRequester.requestFocus()
// TODO(b/163109449): Showing and hiding keyboard should be handled by BaseTextField.
// The requestFocus() call here should be enough to trigger the software keyboard.
// Investiate why this is needed here. If it is really needed, instead of doing
// this in the onClick callback, we should move this logic to the focusObserver
// so that it can show or hide the keyboard based on the focus state.
keyboardController.value?.showSoftwareKeyboard()
}
我在这个问题中发现,我可以通过 View 扩展 EditText 并更改功能,但我还没有找到 Compose 的等价物: Android: Disable soft keyboard at all EditTexts
public class NoImeEditText extends EditText {
public NoImeEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onCheckIsTextEditor() {
return false;
}
}

最佳答案

我已经测试了 Arun Pdiyan 解决方案,并且像使用 null LocalTextInputService 的魅力一样工作(在我的情况下,我从设备连接的条形码阅读器读取数据)

 CompositionLocalProvider(
LocalTextInputService provides null
) {
TextField(
value = barcodeReaderService.readedText.value,
onValueChange = { textState.value=it },
label = { Text("The Label") }
)
}

关于android - 防止键盘出现在 Jetpack Compose 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63887321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com