2014-04-24 48 views
1

我希望用戶在幾分鐘和幾秒鐘內輸入時間。如何在分鐘輸入後自動添加「:」?在editText中自動分隔mm:ss?

在Eclipse中使用Eclipse。

到目前爲止,我有這樣的:

EditText editTextT; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);  

editTextT = (EditText) findViewById(R.id.editTextT); 

editTextT.setOnKeyListener(new EditText.OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if (editTextT.getText().length() == 2) { 
     editTextT.setText(editTextT.getText() + ":"); 
     editTextT.setSelection(editTextT.getText().length()); 
    } 
    return false; 
} 
}); 
+0

請編輯您的問題並添加您正在使用的編程語言 –

回答

0

你有一個KeyListener添加到您的TextField。然後,例如,您可以對發佈的密鑰做出反應。你檢查textarea中的文字長度,並在字符串末尾添加一個:
看一看這樣的:

textfield.addKeyListener(new KeyListener() { 

      @Override 
      public void keyTyped(KeyEvent e) { 

      } 

      @Override 
      public void keyPressed(KeyEvent e) { 

      } 

      @Override 
      public void keyReleased(KeyEvent e) { 
       if (textfield.getText().length() == 2) { 
        textfield.setText(textfield.getText() + ":"); 
        textfield.setCaretPosition(textfield.getText().length()); 
       } 
      } 
     }); 

編輯: 這是Java的解決方案像你上面提到的,如果你需要爲Android的解決方案(因爲你editText的),試試這個:

edittext.addTextChangedListener(new TextWatcher(){ 
    @Override 
    public void afterTextChanged(Editable s) { 
     if (editText.getText().length() == 2) { 
      editText.setText(editText.getText() + ":"); 
      editText.setSelection(et.getText().length()); 
     } 
    } 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

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

編輯2:請參閱更新,並使用TextWatcher嘗試。

+0

感謝您的幫助。我已經實現了它,但似乎只有在退格/刪除命中時纔會調用它。即如果輸入2位數字,則不會發生任何事情,但如果輸入3,則刪除一個冒號輸入。我將複製並粘貼我的新代碼到我的原始文章 –

+0

我再次編輯它 –

+0

TextWatcher提供了一個錯誤「類型new TextWatcher(){}必須實現繼承的抽象方法TextWatcher.onTextChanged(CharSequence,int,int,int )」 –