Handle enter key in EditText across different devices

前端 未结 3 1290
温柔的废话
温柔的废话 2021-02-14 11:07

Right now I\'m handling the enter key in my EditText fields using a an onEditorActionListener and looking at the Action ID for IME_NULL. It works fine for all my users except o

相关标签:
3条回答
  • 2021-02-14 11:14

    I figured out how to get it to work.

    I had to add android:singleLine="true" to the EditText tag in the layout XML (alternately you can set it by using setSingleLine() in code). This forces the edit text to use only one line and focus will go to the next EditText box.

    0 讨论(0)
  • 2021-02-14 11:35

    Try this solution: (I haven't tested it)

    Set the following property to your EditText

    android:imeOptions="actionNext"
    

    Now you can set the following onEditorAction

    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            // Program Logic Here
            return true;    
        }
        return false;
    }
    

    For some additional functionality, you can set your password EditText to:

    android:imeOptions="actionDone"
    

    So you can then just have something like this:

    TextView.OnEditorActionListener keyListener = new TextView.OnEditorActionListener(){
            public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
                if(actionId == EditorInfo.IME_ACTION_NEXT) {
                    ((EditText) findViewById(R.id.etPass)).requestFocus();
                }
                if (actionId == EditorInfo.IME_ACTION_DONE) {
                    logon();
                }
                return true;
            }
        };
    
    0 讨论(0)
  • 2021-02-14 11:36
    (EditText) passwordView = (EditText) findViewById(R.id.password);
    passwordView.setImeOptions(EditorInfo.IME_ACTION_DONE);
        passwordView.setOnEditorActionListener(new OnEditorActionListener()
            {
                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
                {
                    String input;
                    if(actionId == EditorInfo.IME_ACTION_DONE)
                    {
                       input= v.getText().toString();
                        Toast toast= Toast.makeText(LogIn.this,input,
                                Toast.LENGTH_LONG);
                        toast.setGravity(Gravity.CENTER, 0, 0);
                        toast.show();
                        return true;
                    }
                    return false;
                }
            });
    
    0 讨论(0)
提交回复
热议问题