2015-12-09 36 views
2

對話框中EditText的setOnKeyListner不工作。setOnKeyListener在對話框中不工作

ParameterDialog有一個edittext,我們不應該輸入空格。所以我實現setOnKeyListener編輯文本,但我仍然可以輸入空間。

那麼我怎樣才能得到鍵輸入edittext除setOnKeyListner()?

public void parameterDialog() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    final TextInputLayout tnlAddParameter = new TextInputLayout(this); 
    final EditText etAddParameter = new EditText(this); 
    etAddParameter.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 

    etAddParameter.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      Toast.makeText(getBaseContext(),""+keyCode,Toast.LENGTH_SHORT).show(); 
      if (event.getKeyCode() == KeyEvent.KEYCODE_SPACE) { 
       return true; 
      } 
      return false; 
     } 
    }); 
    tnlAddParameter.addView(etAddParameter); 
    builder.setView(tnlAddParameter); 
    builder.setTitle(R.string.title_add_parameter) 
      .setPositiveButton(R.string.add_template, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          String param = etAddParameter.getText().toString().trim(); 
         } 
        }) 

      .setNegativeButton(R.string.cancel, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          // User cancelled the dialog 
          dialog.dismiss(); 
         } 
        }); 
    // create alert dialog 
    final AlertDialog alertDialog = builder.create(); 
    // show it 
    alertDialog.show(); 
    // Text change listener to enable/disable Proceed button. 
} 
+0

你可以簡單地驗證了空間 –

+0

的EditText在填寫的EditText,用戶不應該能夠添加空格,如果用戶按空格鍵敬酒消息應該顯示。 – Manukumar

回答

0

試試這個。不知道是否適合你的需要只是嘗試。 它使用android中的文本更改偵聽器。

 etAddParameter.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 


       validate(s.toString()); 
      } 
     }); 
    } 

    private void validate(String s) { 

     if (s.contains(" ")) 
     { 
      etAddParameter.setError("Text should not contain space"); 
     int length = etAddParameter.getText().length(); 
     if (length > 0) { 
      etAddParameter.getText().delete(length - 1, length); 
     } 
     } 
    } 
+0

謝謝你,但是我仍然可以在那裏輸入空格.. – Manukumar

+0

你可以輸入空格,但是它會被驗證。和錯誤消息將被設置,我不認爲你可以從默認鍵盤禁用空間 –

+0

我已經編輯了我的答案,現在嘗試並檢查...它不會允許您鍵入空間現在 –