在应用程序中禁用键盘上的设置按钮

时间:2014-05-12 12:11:31

标签: android android-softkeyboard

是否可以从Android应用程序的软键盘中完全禁用设置键?

我要禁用的按钮是图像左下角的第二个按钮:

Example

现在我有这样的事情:

userName = (EditText) findViewById(R.id.txt_name);
password = (EditText) findViewById(R.id.password);
userName.setOnKeyListener(this);
password.setOnKeyListener(this);

public boolean onKey(View v, int keyCode, KeyEvent event) {

switch (v.getId()) {
     case R.id.txt_name:
     if ((event.getAction() == KeyEvent.ACTION_DOWN)
     && (keyCode == KeyEvent.KEYCODE_SETTINGS)) {
        mUserName = userName.getText().toString();
        if (mUserName.equals("")) {
           Toast.makeText(this, "Enter user name...",
           Toast.LENGTH_SHORT).show();

     } else
     password.requestFocus();
     break
  }
}

遗憾的是,此代码无法检测到设置密钥。

2 个答案:

答案 0 :(得分:2)

  

是否可以从Android应用程序的软键盘中完全禁用设置键?

您可以编写自己的输入法编辑器(或修改现有的编码),但没有此按钮。将此作为默认键盘放在自定义ROM中可以实现您的目标。

然而,SDK应用程序无法禁用此按钮或以其他方式控制输入法编辑器的行为。

答案 1 :(得分:0)

尝试onKeyDown代替onKey。在您的代码中例如:

@Override  
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (v.getId()) {
     case R.id.txt_name:
     if (keyCode == KeyEvent.KEYCODE_SETTINGS) {        
        mUserName = userName.getText().toString();
        if (mUserName.equals("")) {
           Toast.makeText(this, "Enter user name...",
           Toast.LENGTH_SHORT).show();

     } else
     password.requestFocus();
     break
  }
}