2017-09-12 75 views
0

例如:我在edittext中輸入1,然後再次輸入1,如果我在同一個edittext中輸入2,則不想刪除manualy 1,但想直接從1覆蓋到2 。如何在編輯文本的maxLength爲1時覆蓋編輯文本的文本

例如:

editTextOtpFirst.addTextChangedListener(this); 
    editTextOtpSecond.addTextChangedListener(this); 

     @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) { 


    if (editTextOtpFirst.getText().length() ==1 && !checkEditTextEmpty(editTextOtpFirst)) { 

     editTextOtpSecond.requestFocus(); 
    } 
    if (editTextOtpSecond.getText().length() ==1 && !checkEditTextEmpty(editTextOtpFirst)) { 
     editTextOtpThird.requestFocus(); 
    } 

} 




@Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if (v.getId() == R.id.editTextOtpThird) { 
     if (event.getAction() == KeyEvent.ACTION_UP) { 
      if (keyCode == KeyEvent.KEYCODE_DEL) { 

       editTextOtpSecond.requestFocus(); 
       return true; 
      } 
     } 
    } 
    if (v.getId() == R.id.editTextOtpFourth) { 
     if (event.getAction() == KeyEvent.ACTION_UP) { 
      if (keyCode == KeyEvent.KEYCODE_DEL) { 
       editTextOtpThird.requestFocus(); 
       return true; 
      } 
     } 
    } 
    if (v.getId() == R.id.editTextOtpSecond) { 
     if (event.getAction() == KeyEvent.ACTION_UP) { 
      if (keyCode == KeyEvent.KEYCODE_DEL) { 

       editTextOtpFirst.requestFocus(); 
       return true; 
      } 
     } 
    } 

現在,當我的值在編輯「1」輸入文本1,然後將光標移動到下一個編輯文本-2,但我想從改變編輯文本-1的值「1」到「4」,但需要手動刪除「1」,然後需要輸入另一個值..但我不想這...我想直接覆蓋從「1」到「4」,當我輸入另一個編輯文本中的值。

回答

0

我認爲你的解決方案將使用編輯文本提示,而不是文本。您可以將提示顏色設置爲您想要的文字顏色。然後你可以使用setHint方法。

+0

但我想重寫已編輯文本中的文本。當我在該編輯文本中第二次輸入時,上一個將自動覆蓋。這是我的問題 – khushbu

0

您可以通過添加onTextChangeListener到編輯文本,像這樣做使用TextWatcher

editText.addOnTextChangeListener(new TextWatcher{ 
beforeTextChanged(..){ 
// ..... can try something here 
} 
onTextChanged(Charsequence text, ...){ 
// or can append the text to the editText here 
editText.setText(""); 
editText.append(text); 
} 
}); 

而且我在寫這個代碼去所以請認準正確syntaxing PS。接口名稱是正確的。希望這個幫助!

0

您可以將此一行添加到您的佈局XML文件,而Android也將這樣做的東西你

android:maxLength="1" 

您應該將其添加爲一個屬性的EDITTEXT元素,例如

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="text" 
    android:maxLength="1" /> 

這是一個古老的問題,但我認爲這將工作得很好。

+0

我已經添加了這一行..但沒有工作 – khushbu