(EditText) addTextChangedListener 통해 이벤트 받아오기
EditText의 이벤트를 받아올 때 쓰는 API가 있다.
addTextChangedListener(TextWatcher watcher)을 사용하면된다.
오버라이딩되는 API는 총 3가지가 있고 아래 소스 위에 주석으로 설명해 놓았다.
아래의 예제는 addTextChangedListener을 이용한 간단한 예제이다.
EditText를 통해 Password를 입력받을 때 8자리 이상이라고 가정한다면. 8자리 이하가 입력되었을 때 빨간색으로, 8자리 이상이면 검정색으로 EditText의 입력된 내용의 색이 바뀐다.
EditText에는 다양한 inputType이 존재하는데 android:inputType="textPassword" 속성을 이용하면 Password를 입력받을 때처럼 문자가 똥그라미로 바껴서 보인다.
import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; public class MainActivity extends AppCompatActivity { EditText edt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edt = (EditText)findViewById(R.id.edt); edt.addTextChangedListener(new TextWatcher() { @Override //입력하기 전에 호출되는 API public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override //EditText에 변화가 있을 때 public void onTextChanged(CharSequence s, int start, int before, int count) { String text = s.toString(); if (text.length() < 8) { edt.setTextColor(Color.RED); } else { edt.setTextColor(Color.BLACK); } } @Override //입력이 끝났을 때 public void afterTextChanged(Editable s) { } }); } }