2017-09-12 10 views
0

예 : 편집 텍스 트에 1을 입력 한 다음 동일한 편집 텍스트에 2를 입력 한 다음 manualy 1을 제거하고 싶지는 않지만 1에서 2로 직접 오버라이드하고 싶습니다. .edittext의 maxLength가 1 일 때 편집 텍스트의 텍스트를 덮어 쓰는 방법

예를 들어

: 지금은 값 "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은 그 다음 편집으로 이동 커서 텍스트-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 추신을 찾아주십시오 이동합니다. 인터페이스 이름이 정확합니다. 희망이 도움이!

0

당신은 당신의 레이아웃 XML 파일이 한 줄을 추가 할 수 있으며 안드로이드는

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