我在android:singleLine="true"上提供了EditTextPreference选项,并且当对话框中的编辑框具有焦点时,软件键盘会显示“完成”按钮来代替Enter键。但是,如果按“完成”按钮,则仅软件键盘关闭,而我仍然必须单击对话框上的“完成”按钮。

无论如何,是否需要在软件键盘上按下Enter键和ime动作键以关闭对话框并应用新值?

最佳答案

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

mEditTextPreference.getEditText().setImeOptions(EditorInfo.IME_ACTION_DONE);


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

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;
    }
});

关于android - 如何使Enter键在EditTextPreference对话框上起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9065629/

10-09 01:30