如何在软键盘中显示空格键并在用户单击空格键时执行某些操作

时间:2012-11-15 07:28:14

标签: android android-edittext

我有一个edittext。在该edittext用户输入一些文本。当用户点击空格键时,我需要执行一些操作。我怎么能这样做。

提前致谢。

3 个答案:

答案 0 :(得分:3)

要在用户按空格键时执行某些操作,请使用以下内容 -

if((event.getAction()==KeyEvent.ACTION_DOWN)&&(key == KeyEvent.KEYCODE_SPACE)){
//put your code for whatever you what to do when the user presses space here
   }
}

Problems intercepting space key in EditText

如果您有多个edittexts,请在上面的代码中添加

if (edittext.hasFocus()){
    //do something for particular edit text
}

我想我知道为什么你的edittext无效。当编辑文本被聚焦(选中)时,按键点击会绕过您的活动并直接进入编辑文本。要解决此问题,您需要将onKeyListener移动到编辑文本的onKeyListener

请尝试使用以下代码

edittext.setOnKeyListener(new OnKeyListener() {           
        @Override
        public boolean onKey(View v, int key, KeyEvent event) {
            if (event.getAction()==KeyEvent.ACTION_DOWN && key == KeyEvent.KEYCODE_ENTER) {
                //operation that you want on key press
                return true;
            }
            return false;
        }
    });

希望这个帮助

答案 1 :(得分:1)

我认为将TextWatcher用于EditText会更好。你可以用这种方式实现

 EditText et = (EditText)findViewById(R.id.ed1);

    et.addTextChangedListener(new TextWatcher()
    {
        public void afterTextChanged(Editable s)
        {
              // Abstract Method of TextWatcher Interface.
        }
        public void beforeTextChanged(CharSequence s,
                int start, int count, int after)
        {
            // Abstract Method of TextWatcher Interface.
        }
        public void onTextChanged(CharSequence s,
                int start, int before, int count)
        {
            System.out.println(s);
            if(s.toString().equals(" "))
            {
                Toast.makeText(getApplicationContext(), "Space is clicked", Toast.LENGTH_LONG).show();
            }
        }
    });

答案 2 :(得分:1)

当用户单击空格按钮定义您自己的操作时,尝试这对您肯定有用...

youredittext.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                // If the event is a key-down event on the "enter" button
                if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                    (keyCode == KeyEvent.KEYCODE_SPACE)) {
                  // Perform action on key press

                  Toast.makeText(getApplicationContext(), youredittext.getText(), Toast.LENGTH_SHORT).show();
                  return true;
                }
                return false;
            }
        });