【问题标题】:KeyBoard : setonkeylistener not working for EditText键盘:setonkeylistener 不适用于 EditText
【发布时间】:2017-09-04 09:13:19
【问题描述】:

我创建了一个应用程序,当用户单击 android 键盘的 ENTER 键时它会烤一些文本,但它在我的桌面键盘上工作意味着当我单击桌面键盘的 Enter 键时它会烤面包。
那么我能为安卓键盘的回车键做什么呢???

这里是代码:

public class MainActivity extends AppCompatActivity implements View.OnKeyListener{

EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText=(EditText)findViewById(R.id.editText);
    editText.setOnKeyListener(this);
}

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_ENTER){
        Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
        return true;
    }
    return false;
}

}

【问题讨论】:

    标签: android keyboard onkeylistener


    【解决方案1】:

    尝试使用这个:首先使用KeyEvent.ACTION_DOWN过滤您的操作

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if ((event.getAction() == KeyEvent.ACTION_DOWN)
                && (keyCode == KeyEvent.KEYCODE_ENTER)) {
            Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
            return true;
        }
        return false;
    }
    

    编辑

    在您的Edittext 上使用setOnEditorActionListener

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if ( (actionId == EditorInfo.IME_ACTION_DONE) || ((event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN ))){
                    Toast.makeText(this,editText.getText().toString()+"Enter Pressed",Toast.LENGTH_LONG).show();
                    return true;
                }
                else{
                    return false;
                }
            }
        });
    

    确保您在 XML 中拥有:

    <EditText
        android:imeOptions="actionDone"
        android:inputType="text"/>
    

    【讨论】:

    【解决方案2】:

    onKeyListener() 用于硬键盘而不是软键盘。


    有用的阅读:

    EditText OnKeyListener not working

    Android EditText delete(backspace) key event

    setOnKeyListener not responding

    【讨论】:

      猜你喜欢
      • 2018-05-27
      • 1970-01-01
      • 2015-09-15
      • 2013-09-27
      • 1970-01-01
      • 2021-09-30
      • 2019-03-21
      • 1970-01-01
      • 2010-12-30
      相关资源
      最近更新 更多