Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “如何捕捉软键盘”;输入“;_Android - Fatal编程技术网

Android “如何捕捉软键盘”;输入“;

Android “如何捕捉软键盘”;输入“;,android,Android,我正在开发一个聊天应用程序,并且正在寻找一种方法,在编辑消息的过程中,在软键盘上按下ENTER键(在EditText中)。目的是直接发送文本。 显然,我还实现了一个“发送”按钮 两次尝试: 使用editText.addTextChangedListener(新的TextWatcher()… 结果:我在ContextChanged和afterTextChanged中获得“\n”字符 回调。我可以“删除”此字符并发送聊天,但我不喜欢 这边走 使用editText.setOnEditorActionL

我正在开发一个聊天应用程序,并且正在寻找一种方法,在编辑消息的过程中,在软键盘上按下ENTER键(在EditText中)。目的是直接发送文本。 显然,我还实现了一个“发送”按钮

两次尝试:

  • 使用editText.addTextChangedListener(新的TextWatcher()…

    结果:我在ContextChanged和afterTextChanged中获得“\n”字符
    回调。我可以“删除”此字符并发送聊天,但我不喜欢
    这边走

  • 使用editText.setOnEditorActionListener(新建TextView.OnEditorActionListener()…

    结果:它不起作用

  • 有更好的解决方案吗?

    试试这个

    editText.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:
                        //Perform Your action
                        return true;
                    default:
                        break;
                }
            }
            return false;
        }
    });
    
    试试这个

    editText.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:
                        //Perform Your action
                        return true;
                    default:
                        break;
                }
            }
            return false;
        }
    });
    

    我用它来捕捉软键盘输入,效果很好,但我不确定这是否适合您:

    editText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
            if (keyCode == KeyEvent.KEYCODE_ENTER && keyEvent.getAction() == KeyEvent.ACTION_UP) {
                //do something.
                return true;
            }
            return false;
        }
    });
    

    我用它来捕捉软键盘输入,效果很好,但我不确定这是否适合您:

    editText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
            if (keyCode == KeyEvent.KEYCODE_ENTER && keyEvent.getAction() == KeyEvent.ACTION_UP) {
                //do something.
                return true;
            }
            return false;
        }
    });
    

    上面链接中的可能重复,选择的答案摘录:“…setOnEditorActionListener()方法,全部在TextView上”,但我使用的是EditText。你看过所有著名的聊天应用程序吗?我只看过FBs Messagner、Whatsapp、IMO和Skype。它们都在应用程序中提供了一个单独的发送按钮。现在添加了
    android:imeOptions=“actionSend”
    正如@Amy所建议的,可能会为您提供实现所需的方法(我从未尝试过),但您将无法在聊天中添加新行。上述链接中的可能重复,选择的答案摘录:“…setOnEditorActionListener()方法,全部在TextView上”,但我使用的是EditTextYou查看了所有著名的聊天应用程序吗?我刚刚查看了FBs Messagner、Whatsapp、IMO和Skype。它们都在应用程序中提供了一个单独的发送按钮。现在添加@Amy建议的
    android:imeOptions=“actionSend”
    ,可能会为您提供实现所需目标的方法(我从未尝试过)但您将无法在聊天中添加新行。但是,Android开发者:“将硬件键事件分派到此视图时要调用的回调的接口定义。将在键事件提供给视图之前调用回调。这仅对硬件键盘有用;软件输入方法没有义务触发此侦听器。“我需要有关软键盘的信息和建议。然后您可以在xml中使用
    android:imeOptions=“actionSend”
    。将永远无法工作,您无法在androidBut中获得软键盘输入事件,请从android开发者处获得:“将硬件键事件分派到此视图时要调用的回调的接口定义。将在键事件提供给视图之前调用回调。这仅对硬件键盘有用;软件输入方法没有义务触发此侦听器。“我需要有关软键盘的信息和建议。然后你可以在xml中使用
    android:imeOptions=“actionSend”
    。这将永远无法工作,你无法在android中获得软键盘输入事件