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

Android DialogFragment中的EditText:如何限制为单行并显示;搜索“;键盘上的图标?,android,android-edittext,android-dialogfragment,android-keypad,dialogfragment,Android,Android Edittext,Android Dialogfragment,Android Keypad,Dialogfragment,我已准备好回答我的问题: 在Android的文字游戏中,我想为用户提供一种检查游戏词典中是否有文字的可能性——通过显示带有单个EditText的DialogFragment 以下是从自定义文件中摘录的代码: 不幸的是,有两个问题(在上面的屏幕截图中用红色箭头标记): EditText 键盘上没有显示“搜索”图标 这里有人能帮忙吗?我倾向于发现设置单行线(true)比设置单行线(1)更稳定 对于搜索,请尝试添加editText.setImeOptions(EditorInfo.IME\u ACT

我已准备好回答我的问题:

在Android的文字游戏中,我想为用户提供一种检查游戏词典中是否有文字的可能性——通过显示带有单个
EditText
DialogFragment

以下是从自定义文件中摘录的代码:

不幸的是,有两个问题(在上面的屏幕截图中用红色箭头标记):

  • EditText
  • 键盘上没有显示“搜索”图标

  • 这里有人能帮忙吗?

    我倾向于发现
    设置单行线(true)
    设置单行线(1)
    更稳定


    对于搜索,请尝试添加
    editText.setImeOptions(EditorInfo.IME\u ACTION\u search)
    。您的代码在接收到搜索事件时会处理该事件,但这不会告诉它首先发送该事件。

    或者,在xml:android:singleLine=“true”中
    @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();
    }