2014-05-12 96 views
0

是否可以完全禁用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 
    } 
} 

遺憾的是這段代碼不會檢測設置鍵。

+0

但是,您的設置按鈕有什麼問題? –

+0

我認爲答案是否定的。有很多不同的鍵盤實現,你可以爲其中的一些實現。但是你不能確定它是否適用於所有的實現。 –

+0

我正在創建一個只能運行我的應用的自助服務終端平板電腦。 我正在創建一個自定義ROM,因此只有1個鍵盤,沒有選擇安裝另一個。 – user3506467

回答

2

是否可以完全禁用android應用軟鍵盤上的設置鍵?

您可以編寫自己的輸入法編輯器(或修改現有編輯器的代碼),但沒有此按鈕。將它作爲定製ROM中的默認鍵盤將實現您的目標。

但是,SDK應用程序無法禁用此按鈕或以其他方式控制輸入法編輯器的行爲。

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 
    } 
} 
+1

不幸的是,我不能得到這個工作.. – user3506467

+1

我很抱歉給你。所以不可能覆蓋設置密鑰? –

相關問題