【发布时间】:2018-02-19 15:21:58
【问题描述】:
首先我不得不说我已经在 SO 上阅读了类似的问题和答案,这个问题基本上是 this question 和许多其他问题的重复,但是对这些问题的答案并不像我想要的那样工作。
问题:
像这样以编程方式在我的 EditText 上设置长度过滤器:
editText.setFilters(new InputFilter[]{new LengthFilter(10)} );
它唯一做的就是隐藏 EditText 中超出限制的文本。它仍然在建议框中显示长(无限)文本,我必须删除(退格)每个字母,然后才能删除 EditText 中显示的内容。
建议的解决方案:
-
将 InputType 设置为
textFilter。
我以编程方式这样做了:editText.setInputType( InputType.TYPE_TEXT_VARIATION_FILTER );它隐藏了建议,但无限文本仍然存在,我仍然必须使用退格键删除不应该存在的字母。
-
将 InputType 设置为
textNoSuggestions|textVisiblePassword。
我以编程方式做到了这一点(必须添加TYPE_CLASS_TEXT否则它不会工作):editText.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );这个确实有效,但问题是它停止“手势输入”并将字体更改为等宽字体。
更好的解决方案?
如您所见,这两种方法实际上在没有其他问题的情况下无法正常工作。有没有其他我错过的方法。如果我想继续输入手势和建议,是否应该只使用TextWatcher?
【问题讨论】:
标签: android android-edittext android-inputtype android-input-filter