Plain Text는 주로 어떤 내용을 입력받을 때 사용하는 위젯이며 몇 가지 속성과 이벤트를 통해 사용법을 간단히 알아보고자 합니다.
우선 속성중 hint를 사용하면 사용자에게 입력받기 전에 어떤 정보를 입력해야 할지 알려줄 수 있습니다. 다만 이 속성의 설정으로 인한 변화를 보려면 text속성을 지워야 합니다.
또한 inputType을 조정하면 상황에 따라 맞는 키보드입력환경을 제공할 수 있습니다.
여러 가지 Type을 동시에 선택할 수 있지만 실제 Type을 너무 섞어놓게 되면 제대로 된 환경을 제공할 수 없습니다. 아래는 inputType을 Date로만 설정한 예입니다.
Type에 따른 용도는 Date 날짜, number 숫자, Url 인터넷주소등 Type이름을 보면 거의 유추가 가능합니다.
위 스마트폰 화면 예시를 보면 오른쪽 하단에 체크모양의 아이콘을 볼 수 있는데, 이것은 imeOptions를 actionDone으로 설정(혹은 기본 타입) 한 경우이며 단순히 입력을 완료하겠다는 의미를 가집니다.
아래는 이 설정을 actionSearch로 변경한 경우이며 Search에서 알 수 있듯이 무엇인가를 검색한다는 뜻이기에 아이콘 모양이 돋보기로 표시됨을 알 수 있습니다.
아무런 기능도 필요하지 않으면 actionNone으로 설정할 수 있으며 actionPrevious 이전으로 돌아가기, actionNext 다음으로 넘어가기등 상황에 맞는 여러 가지 아이콘 모양을 표시할 수 있습니다. 다만 이 설정은 단순히 사용자에게 용도에 맞는 아이콘을 보여주기 위한 것일 뿐 실제 처리는 직접 코드를 통해 구현해야 합니다.
Plain Text는 입력에 대한 위젯답게 '입력'에 대한 처리를 구현할 수 있는데 이 '입력'은 대부분 Listener를 구현함으로서 이루어집니다.
Listener룰 직접 구현해 보기 위해 소스코드로 이동한 뒤 위에서 추가한 Plain Text의 ID를 입력하고. 을 찍어줍니다.
그러면 관련한 많은 내용들을 볼 수 있는데 이 중에서 입력(변경) 상황을 감지할 수 있는 addTextChangedListener를 선택해 보도록 하겠습니다.
editText.addTextChangedListener(object : TextWatcher {
})
addTextChangedListener를 위와 같이 추가하고 난 뒤 addTextChangedListener 블록 안에서 Ctrl + I 키를 눌러 구현 가능한 메서드를 불러옵니다. addTextChangedListener는 인터페이스이기에 필요한 메서드를 구현해야 하는 것입니다.
메서드는 인터페이스의 구현에 따라 모든 메서드를 구현해야 하므로 전체를 선택한 뒤 OK 버튼을 눌러줍니다. 그러면 아래와 메서드의 기본 코드가 추가됩니다.
editText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
TODO("Not yet implemented")
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
TODO("Not yet implemented")
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
TODO("Not yet implemented")
}
})
각 메서드를 통해 받을 수 있는 값이 매게 변수로 추가되어 있는데 이들 값을 통해서 필요한 처리를 진행할 수 있습니다. 우선 각 메서드에 존재하는 TODO를 모두 삭제하고 onTextChanged메서드 아래 다음과 같이 코드를 입력합니다.
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
Log.d("test", "입력내용:${s.toString()}-start:${start}-before:${before}-count:${count}")
}
onTextChanaged는 내용이 변경될 때 발생하는 메서드로 s는 현재 입력 내용, start는 변경되는 문자열의 시작 인덱스, before는 변경되기 이전 문자열 길이, count는 start부터 변경되는 문자열의 길이 값을 가져옵니다.
그 외 afterTextChanged메서드는 변경된 후, beforeTextChanged는 변경 전에 발생하는 메서드입니다.
'Mobile > Kotlin' 카테고리의 다른 글
[Kotlin] 위젯 - RadioGroup (0) | 2020.12.15 |
---|---|
[Kotlin] 위젯 - ImageButton (0) | 2020.12.15 |
[Kotlin] 위젯 - 텍스트뷰(TextView) (0) | 2020.12.14 |
[Kotlin] 레이아웃(Layout) - 리니어 (0) | 2020.12.11 |
[Kotlin] 레이아웃(Layout) - 컨스트런트 (0) | 2020.12.11 |