简介
项目中有一个EditText,需要键盘中的回车事件。原本的写法:
EditText属性设置:
android:imeOptions="actionSearch"
android:singleLine="true"
设置为单行,回车统一显示为“搜索”
private TextView.OnEditorActionListener queryEdit = new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
String query = inputView.getText().toString().trim();
if (actionId != EditorInfo.IME_ACTION_SEARCH || TextUtils.isEmpty(query)) return false;
KeyboardUtils.hideSoftKeyboard(mContext, inputView);
if (searchType == Classical_type) {
Intent intent = new Intent(mContext, SuggestResultActivity.class);
intent.putExtra(SuggestResultActivity.INTENT_QUERY, query);
startActivity(intent);
} else {
Intent intent = new Intent(mContext, DetailActivity.class);
intent.putExtra(DetailActivity.IntentWords, query);
intent.putExtra(DetailActivity.IntentAncientModel, false);
startActivity(intent);
}
return true;
}
};
在OnEditorActionListener的OnEditorAction方法中对actionId判断是否是IME_ACTION_SEARCH。
原本这段逻辑么有问题,后来想着把sdk舍弃的singleLine数据换成maxLine,代码更改如下:
android:imeOptions="actionSearch"
android:maxLine="1"
更改的代码就一行,结果。。。android:imeOptions="actionSearch"这个属性没有生效。。
最后的解决方法,把maxLine改回singleLine.