在软键盘上使用"ENTER"键而不是单击按钮

Pet*_* O. 89 keyboard android android-softkeyboard

您好我有搜索EditText和搜索Button.当我输入搜索到的文本时,我想在软键盘上使用ENTER键而不是搜索Button来激活搜索功能.

提前感谢您的帮助.

Jul*_*ian 148

你可以通过设置OnKeyListener你的方式来实现EditText.

这是我自己的代码中的示例.我有一个EditText命名addCourseText,addCourseFromTextBox当点击回车键或d-pad时将调用该功能.

addCourseText = (EditText) findViewById(R.id.clEtAddCourse);
addCourseText.setOnKeyListener(new OnKeyListener()
{
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if (event.getAction() == KeyEvent.ACTION_DOWN)
        {
            switch (keyCode)
            {
                case KeyEvent.KEYCODE_DPAD_CENTER:
                case KeyEvent.KEYCODE_ENTER:
                    addCourseFromTextBox();
                    return true;
                default:
                    break;
            }
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 实际上,不保证软键.例如,它不适用于Nexus 7(Android 4.2)上的"ENTER",也适用于"BACK". (4认同)
  • @Ghedeon你可以为编辑文本设置`android:inputType ="text"`xml来显示回车键与具有回车符的默认键盘. (3认同)
  • 从Jellybean开始,这种方法无法保证工作,请参阅http://developer.android.com/reference/android/view/KeyEvent.html (2认同)
  • 此解决方案在许多设备上完全被破解,包括Nexus 7.不要用它! (2认同)

Анд*_*чук 40

<EditText
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/search_hint"
    android:inputType="text"
    android:imeOptions="actionSend" />
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过为EditText元素定义TextView.OnEditorActionListener来侦听操作按钮上的按下.在侦听器中,响应EditorInfo类中定义的相应IME操作ID,例如IME_ACTION_SEND.例如:

EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            sendMessage();
            handled = true;
        }
        return handled;
    }
});
Run Code Online (Sandbox Code Playgroud)

资料来源:https://developer.android.com/training/keyboard-input/style.html


ite*_*mon 25

可能你可以像这样在EditText中添加一个属性:

android:imeOptions="actionSearch"
Run Code Online (Sandbox Code Playgroud)

  • 还需要设置 `android:inputType="text"` (4认同)

小智 5

向EditText添加一个属性,如android:imeOptions ="actionSearch"

这是执行此功能的最佳方式

而imeOptions也有一些其他的值,如"go","next","done"等.