如何在EditTextPreference对话框中输入键

das*_*ony 1 android preferenceactivity android-preferences

我给了android:singleLine="true"选项EditTextPreference,当对话框中的编辑框有焦点时,软件键盘显示"完成"按钮代替Enter键.但是,如果我按下完成按钮,只有软键盘关闭,我仍然需要单击对话框上的完成按钮.

无论如何在软件键盘上输入key和ime动作键来关闭对话框并应用新值?

LZN*_*LZN 7

首先,我将IME选项设置为IME_ACTION_DONE

mEditTextPreference.getEditText().setImeOptions(EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)

然后使用以下代码来保存值并关闭对话框.

mEditTextPreference.getEditText().setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE){
            //mEditTextPreference.setText(mEditTextPreference.getEditText().getText().toString());

            //better solution
            mEditTextPreference.onClick(mEditTextPreference.getDialog(), Dialog.BUTTON_POSITIVE);
            mEditTextPreference.getDialog().dismiss();
            return true;
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我能够通过在调用`dismiss()`之前调用`editPref.onClick(editPref.getDialog(),DialogInterface.BUTTON_POSITIVE);'来欺骗它认为正面按钮被点击了.这是一种hackish方式,但这样我可以重用相同的逻辑. (3认同)