将应用程序从2.2移动到3.x,我使用TextWatcher
进行验证的其中一个EditText表现不佳。简而言之,当用户点击EditText
并且整个单词进入“建议模式”(带有下划线)时,它会从TextWatcher的角度有效地从EditText中删除,触发我的文本验证检查我做一个空的EditText。代码:
mText = (EditText) findViewById(R.id.inpt_title);
mText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable editable) {
final String title = editable.toString();
Log.d(LOG_TAG, "addTextChangedListener(): title: " + title + ", length: " + title.length());
if (title.length() == 0) {
// empty title
mText.setError(getString(R.string.error_note_title_empty));
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
mText.setTextColor(getResources().getColor(R.color.black));
}
@Override
public void onTextChanged(CharSequence s, int start, int count, int after) {}
});
我想继续提出建议,但这里似乎有一些奇怪的互动。
任何一种方法a)在整个单词处于'建议模式'时保持EditText不为空,或者至少检查EditText是否处于'建议'状态以确定EditText是否真的为空,或b)提出建议?我已经尝试了android:inputType="text|textCapWords|textNoSuggestions"
有问题的EditText,并在上面的代码中通过mText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
进行设置,但建议仍在Lenovo 3.1平板电脑上进行。
更新
我看到API 14在EditText中添加了isInputMethodTarget()
方法,我可以用来检查有效建议并禁用验证...但是我正在针对API 12运行。也许我可以直接检查IME看看这些建议是否有效?