[Android] EditText

강승구·2022년 5월 17일
0

EditText는 TextView로부터 파생된 클래스로 TextView는 단순히 Text를 보여주는 역할을 하지만 EditText는 Text를 입력 및 수정까지 가능한 View 위젯이다.

사용법

<EditText
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text="Sample EditText" />

EditText 값 가져오기

val editText: EditText = findViewById(R.id.editText)
val text: String = editText.text.toString()

EditText 밖의 영역을 터치해 키보드 내리기

override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
	val imm: InputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
	imm.hideSoftInputFromWindow(currentFocus?.windowToken, 0)
	return super.dispatchTouchEvent(ev)
}

EditText 값 변화 감지

editText에 입력한 값을 실시간으로 관찰하면서 입력값에 따른 처리를 해야 할 때가 있다. 이때 TextWatcher를 사용할 수 있다.

TextWatcher는 단어 그대로 입력되는 Text를 감지하고 있다가 실시간으로 동작하는 유용한 인터페이스이다.

TextWatcher 인터페이스이기 때문에 아래 3가지 메소드를 재정의 해주어야한다.

private val textWatcher = object : TextWatcher {
	override fun afterTextChanged(s: Editable?) {
            
	}
 
	override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
 
	}
 
	override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
 
	}
}
  • beforeTextChanged(CharSequence charSequence, int i, int i1, int i2)
    -텍스트가 변경되기 바로 이전에 동작하는 메소드이다.
    -첫 글자 입력 시에는 반응하지 않다가 두 번째 글자가 입력되자 처음에 입력했던 글자가 텍스트뷰에 보여진다.
    -그리고 입력했던 문자열들을 하나씩 지울 때마다 지우기 전의 글자가 보인다.

  • onTextChanged(CharSequence charSequence, int i, int i1, int i2)
    -텍스트가 변경되는 동시에 동작하는 메소드다.
    -onTextChanged()는 글자가 입력될 때마다 호출되서 count가 바뀐다.
    -실시간으로 텍스트가 입력되거나 삭제될 때 로직을 추가하려면 해당 메소드에서 할 수도 있다.

  • afterTextChanged(Editable editable)
    -텍스트가 변경된 이후에 동작하는 메소드다.

profile
강승구

0개의 댓글