我已为我的问题准备了a simple test project at GitHub:
在针对Android的文字游戏中,我想为用户提供检查,如果游戏词典中有单词可用,则显示DialogFragment
一个EditText
。
以下是自定义FindWordDialogFragment.java的代码摘录:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final EditText editText = new EditText(getContext());
editText.setMaxLines(1);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v,
int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
String word = editText.getText().toString();
mListener.findWord(word);
dismiss();
return true;
}
return false;
}
});
return new AlertDialog.Builder(getContext())
.setIcon(R.mipmap.ic_launcher)
.setTitle(R.string.find_word_title)
.setView(editText, 16, 16, 16, 16)
.setPositiveButton(R.string.find_word_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String word = editText.getText().toString();
mListener.findWord(word);
}
}
)
.setNegativeButton(R.string.find_word_cancel, null)
.create();
}
不幸的是,有2个问题(在上面的屏幕截图中标有红色箭头):
EditText
有人可以帮忙吗?
答案 0 :(得分:2)
我倾向于发现setSingleLine(true)
比setMaxLines(1)
更加一致。
要进行搜索,请尝试添加editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH)
。您的代码在收到搜索事件时处理搜索事件,但这并不表示它首先发送它。