2

将应用程序从 2.2 迁移到 3.x,我使用TextWatcheron 进行验证的其中一个 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);在上面的代码中设置它,但建议在联想 3.1 平板电脑上不断出现。

更新:

我看到 API 14 向isInputMethodTarget()EditText 添加了一个方法,我可以用它来检查活动建议并禁用验证......但我正在针对 API 12 运行。也许我可以直接检查 IME 以查看建议是否处于活动状态?

4

0 回答 0