Android 插入新行字符时InputFilter行为不一致

Android 插入新行字符时InputFilter行为不一致,android,android-edittext,android-input-filter,Android,Android Edittext,Android Input Filter,给出此方法的签名来自: 在EditText上设置这些属性: android:inputType="textMultiLine|textNoSuggestions" android:textIsSelectable="true" 假设我们在EditText中有一个文本FooBar(使用上述属性设置)。将光标放在这两个单词(Foo | Bar)之间并按Enter)时,我们得到: source = "\n", start = 0, end = 0 dstart = 3, dend = 3, des

给出此方法的签名来自:

EditText
上设置这些属性:

android:inputType="textMultiLine|textNoSuggestions"
android:textIsSelectable="true"
假设我们在
EditText
中有一个文本
FooBar
(使用上述属性设置)。将光标放在这两个单词(
Foo | Bar
)之间并按
Enter
)时,我们得到:

source = "\n",
start = 0,
end = 0

dstart = 3,
dend = 3,
dest = "FooBar"
如您所见,在光标位置插入了新行字符
“\n”
。这在某种程度上是意料之中的,这是好事。我只需要检测此插入,但通过返回
而不是
”\n“
来忽略它

让我们重新开始。假设我们的
EditText
中有一个文本
FooBar
。让我们将光标放在这两个单词(
Foo | Bar
)之间,然后键入123。现在,您应该有
Foo123 | Bar
。然后按
Enter

这就是我所期望的:

source = "\n",
start = 0,
end = 0

dstart = 6,
dend = 6,
dest = "Foo123Bar"
与前面一样,我将返回
,而不是
“\n”
。但是停下来。这就是我实际得到的:

source = "",
start = 0,
end = 0

dstart = 6,
dend = 9,
dest = "Foo123Bar"
为什么
InputFilter
行为不同?我可能误解了什么,但这似乎是一种不一致的行为。知道怎么修吗?或者可能有一个解释

InputFilter
中,我需要一种方法来检测新的行字符插入命令,然后用空字符串替换该字符

任何帮助都将不胜感激

source = "",
start = 0,
end = 0

dstart = 6,
dend = 9,
dest = "Foo123Bar"