DialogFragment中的EditText:如何限制单行并在键盘上显示“搜索”图标?

时间:2015-11-21 19:54:13

标签: android android-edittext android-dialogfragment android-keypad dialogfragment

我已为我的问题准备了a simple test project at GitHub

screenshot

在针对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. 中仍有几行文字
  3. 键盘上没有显示“搜索”图标
  4. 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

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

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