我要求约束EditText
永远不要有相邻的空格字符。编写InputFilter
以防止输入与另一个空格字符相邻的空格字符变得非常容易,但是我试图找出一种处理删除/替换的简洁方法。有关InputFilter
失败的示例,请考虑序列(我使用•作为空间的直观表示):
坐•一个•位
如果用户删除单词" a",结果将是:
坐••位
违反了约束条件。我在InputFilter
中无能为力,因为它只允许修改替换字符串,并且在删除的情况下,替换字符串的长度为零。 (在这种情况下,当用户删除" a"时,我想自动删除其中一个空格。)
我唯一能想到的就是添加TextWatcher
并进一步修改EditText
中afterTextChanged()
的内容。但是,无论我是使用InputFilter
代替还是使用EditText
,这都会让我觉得这是一种解决这个问题的错综复杂的方法。
有没有更好的方法来解决这个问题?
注意(回复一些评论和发布的答案)我只想明确表示我不需要有关如何更换的建议两个空格字符与一个;这很简单。问题涉及从TextWatcher#afterTextChanged()
内更改afterTextChanged()
内容的低效性。至少,进行这样的更改总会触发对InputFilter
的递归调用,我必须进行额外的处理以确保递归不会重复。
我感到沮丧的是,我可以通过TextWatcher
非常有效地获得我所需要的大部分内容但是为了完成这项工作,我需要基本上抛弃这种方法然后去(显然) )低效{{1}}。