DialogFragment 中的 EditText:如何限制为单行并在键盘上显示 "Search" 图标?

EditText in DialogFragment: How to limit to single line and show "Search" icon at the keyboard?

我已经准备好 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个问题(在上面的截图中用红色箭头标记):

  1. EditText中还有几行文字
  2. 而且键盘上没有显示"Search"图标

有人可以帮忙吗?

我倾向于发现 setSingleLine(true)setMaxLines(1) 更一致。

要进行搜索,请尝试添加 editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH)。您的代码在收到搜索事件时处理搜索事件,但这并没有告诉它首先发送它。