我有一个edittext。在该edittext用户输入一些文本。当用户点击空格键时,我需要执行一些操作。我怎么能这样做。
提前致谢。
答案 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;
}
});