检测用户何时进入/离开“;轻扫至键入“;文本输入/编辑文本模式(Android)

检测用户何时进入/离开“;轻扫至键入“;文本输入/编辑文本模式(Android),android,react-native,Android,React Native,这是一个Android问题 在my(ReactNative(在Android中呈现EditText)中,当用户键入“#”,然后使用Androids滑动模式自动完成一个单词时,会在“#”和自动完成的单词之间添加一个空格。因此,我所做的是,一旦更改文本,我就替换“#”和单词之间的空格,然而,当用户处于swift模式时,它确实把事情搞糟了。空间回来了,快速的自动完成把另一个单词搞乱了 当用户接受自动完成时,react native是否有办法监听?然后我想检查前两个字符是否为(hashtag和空格),如

这是一个Android问题

在my
(ReactNative(在Android中呈现
EditText
)中,当用户键入“#”,然后使用Androids滑动模式自动完成一个单词时,会在“#”和自动完成的单词之间添加一个空格。因此,我所做的是,
一旦更改文本,我就替换“#”和单词之间的空格,然而,当用户处于swift模式时,它确实把事情搞糟了。空间回来了,快速的自动完成把另一个单词搞乱了

当用户接受自动完成时,react native是否有办法监听?然后我想检查前两个字符是否为
(hashtag和空格),如果是,则将其替换为
(hashtag不带空格)


我在想,
onCommitCompletion
——在一个建议的单词被接受后触发——这是真的吗?如果是这样的话,这将是完美的,我可以提交一份PR,让react native接受Android

下面是正在发生的事情的视频:

低质量:


我认为这将是
完成后的
——我不确定,尽管我还不能测试。我想在这个回调中,我会得到位置,看看是否有前导空格,如果有,然后删除该前导空格。

发生这种情况是因为您正在通过键盘的滑动功能键入文本。滑动功能会在字符串前后自动添加额外的空格。没有办法摆脱它,它是(某些)键盘的集成功能。我们无法控制它。 别担心,最终用户知道这一点,他所要做的就是键入整个文本,而不是使用滑动功能输入文本

尝试在
文本输入中禁用
自动完成
,我不确定,可能像


而且,这不仅仅是安卓手机的问题,试着安装在苹果设备上,你也会遇到同样的问题。

我在一个主键盘上工作了两年,我不知道你所说的“快速模式”是什么意思。但通用键盘API中没有这样的功能。它可能是某个特定键盘的一个功能,但无法通过编程将其关闭

您所描述的内容听起来最像是自动调整空间。这不是安卓的概念,而是每个键盘的概念。由于安卓对它一无所知,它无法关闭它(在许多键盘上,用户可以关闭,但仅此而已)


如果要覆盖InputConnection或在Java中设置文本监视程序并更改要插入的文本,则可以覆盖它(不是关闭它,而是强制空格消失),但在react-native级别上,这两种方法都无法实现——您需要编写一个自定义编辑文本,并通过本机组件将其链接到react-native上。

我作为专业人员开发android应用程序已经快一年了,从来没有听说过这样的应用程序。你确定“swift模式”是一个正确的术语吗?此外,没有所谓的
,它实际上被称为
,不,它不是
编辑文本,但更像是它的包装。人们通常会在
EditText
中加入
TextInputLayout
,为其提供一些附加功能。看看你的分数,我以为你是新手,这就是我为什么要帮你的原因。你想要的术语叫做
AutoComplete
我刚才看到了你更新的问题。我第一次完全误解了。通过“swift模式”,你指的是IOS版本,对吗?如果是的话,我会问我在应用程序IOS端工作的同事,他们会帮助你。再等5个小时。哦“刷”哈哈。谢谢你,丹尼斯!
onCommitCompletion
是什么意思?它会在一个单词被接受后触发吗?我希望不要改变默认行为,因为它需要正常工作。但对于散列标记,我想检测是否接受自动完成,是否接受,并检查前导的两个字符是否为“#”(磅和空格)。如果是这样的话,自动将这两个前导字符替换为一个#。
onCommitCompletion
Xamarian(微软开发的一个框架,与ReactNative一样)中使用的东西,框架会调用它以响应当前输入法的文本完成。默认实现什么都不做<支持自动完成的代码>文本视图
应覆盖此选项以执行其所需的行为。“它会在一个词被接受后触发吗?”我不太确定。在安卓系统中,我们通常会在
编辑文本中添加一个
侦听器
,每当它是
onTextChangeListener
->啊,很有趣,非常感谢丹尼斯这么快的回复!这就是我提到的-
TextView
EditText
的超类。
EditText
允许您输入文本,而
TextView
只是一个以编程方式添加文本的通道。但是有一种叫做
AutoCompleteTextView
的东西,它接受用户输入,在编译时向它传递一个字符串列表,这将给用户提供建议。谢谢Gabe。我已经为此奋斗了很长时间。我不想关闭它,我需要它,我的目标是只在键入散列后使用swipe/autocomplete时替换空格。除了hashtag之外,默认行为是好的和必需的。接受单词后,
onCommitCompletion
或其他回调是否会触发?@Noitidart它取决于键盘-是否使用完成模式。它可以使用它,但只有当它使用内置完成显示(键盘上方的单词列表)时才可以使用它。许多键盘都实现了自己的功能,而安卓系统则不可靠。更可能是CommitteText,或finishComposingText,尽管可以打其他电话。谢谢