반응형
💡 Widget
- View 중에서 기능을 갖고 사용자와 상호작용하는 것
- Activity가 실행되면 화면이 구성되고 layout 및 view 모두 객체로 생성
- 객체로 생성도니 view 중에 필요한 widget들의 주소값을 얻어와(혹은 뷰바인딩을 통해) 코드로 이벤트에 대한 기능을 넣어 사용자와 소통
TextView
- 문자열을 화면에 표시
TextView 주요 속성
- text : textview로 보여줄 문자열
- lines : 표시하고자 하는 문자열의 라인 수 (설정 안 하면 여러줄 작성해도 표시 x)
- textColor : 문자열 색상
- textSize : 문자열 크기
- textAppearance : 표시되는 문자열 형식 (위 문자열 크기, 색상, 폰트 등을 종합하여 하나의 스타일로 만들어 놓은것)
TextView 주요 프로퍼티 및 메소드
- text : textview에 설정된 문자열 가져옴
- setBackgroundColor : 배경색 지정
- setTextColor : 문자열 색 지정
- append : 문자열 추가
EditText
- 사용자에게 문자열을 입력받을 때 사용
EditText 주요 속성
- text : 사용자가 입력전 처음 EditText에 표시할 문자열을 설정 (이게 설정되어 있으면 당근 hint는 보이지 않음)
- hint : 입력된 값이 없을 경우 표시할 안내문구 설정
- inputType : 입력값의 종류에 따라 표시되는 형식이나 키보드 설정에 영향 (문자열, 시간, 이메일 등의 타입을 설정하면 해당 타입에 최적화된 키보드가 설정)
- imeOptions : 나타나는 키보드의 Enter 키 모양 설정 (사이드바 검색하면 엔터키 종류 나옴)
EditText 주요 프로퍼티
- text : 사용자가 입력한 문자열 값
EditText 주요 이벤트
- TextWatcher : 사용자가 입력한 내용을 실시간으로 감시하는 인터페이스, 메소드 오버라이딩 필수(매개변수를 활용해 변화를 tracking 할 수 있음)
- EditAction : 키보드의 Enter 키를 눌렀을 때 발생하는 이벤트 (*고차함수로 지원)
✔️ EditText 뷰의 inputType 속성을 설정해주지 않은 경우 엔터키를 눌러도 엔터 기능을 못하고 줄바꿈 현상이 나타날 수 있음
https://onlyfor-me-blog.tistory.com/435
[Android] TextWatcher란?
앱을 만들다 보면 editText에 입력한 값을 실시간으로 관찰하면서 입력값에 따른 처리를 해야 할 때가 있다. 그 때 가볍게 써먹을 수 있는 편리한 TextWatcher란 인터페이스가 있다. 이름부터 뭘 하는
onlyfor-me-blog.tistory.com
binding.editText1.setOnEditorActionListener { textView, i, keyEvent ->
binding.textView1.text = "엔터 버튼을 눌름"
binding.TextView2.text = binding.textView1.text
false
// 반환값 필수 (kotlin은 return 안 붙임)
// false : 키보드 내려감 true : 키보드 안 내려감
}
TextInputLayout
- 사용자에게 문자열을 입력받을 때 사용 (EditText와 거의 동일)
- TextInputLayout 안에 TextInputEditText가 들어가 있는 형태(EditText 객체를 가짐) EditText 프로퍼티를 사용해 입력값을 받아오고 처리
TextInputLayout 주요 프로퍼티
- editText : TextInputLayout이 가지고 있는 EditText 객체의 주소값을 가져옴
- error : 입력한 문자열이 조건에 부합하지 않는 경우 오류로 표시할 메시지를 설정
textView1.text = textInputLayout1.editText?.text //editText는 문자열을 가져오기 위해 text 프로퍼티 사용
// textInputLayout1 가 갖고 있는 editText 객체의 값을 가져와 textView1 에 출력
// ? 는 null 가능 문자
TextInputLayout 주요 속성
- hint : 입력한 내용이 없을 때 보여주는 안내 메세지. EditText와 다르게 문자열 입력시 상단부분으로 올라감
- counterEnabled : 입력한 글자의 수가 나타남 (*우측사이드바에서 설정가능)
- counterMaxLength : 지정한 글자수를 넘으면 붉은색으로 표시 (*우측사이드바에서 설정가능)
binding.button.setOnClickListener { // 클릭리스너를 바로 구현
binding.textView.text = binding.textInputLayout1.editText?.text
}
binding.textInputLayout1.editText?.addTextChangedListener(listner1) // 외부에서 구현한 리스너 달아주기
}
val listner1 = object : TextWatcher{ //
// 문자열 변경 작업이 화면에 반영시
override fun afterTextChanged(p0: Editable?) {
if(p0 != null){
if(p0.length > 10){
binding.textInputLayout1.error ="10글자 이하로 입력하시오."
//버튼 비활성화 필요
}else{
binding.textInputLayout1.error = null
}
}
}
// 문자열 변경 작업이 완료시
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
// 문자열 변경전
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
}
}
💡 커서 없애고, 키보드 내리기
editText1.clearFocus() //포커스 사라짐
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
/*
* getSystemService -> 안드로이드 os 에서 운영되고 있는 기능들을 가져다 쓰고 싶을 때 사용
* 자신이 사용할 기능을 명시하고 형변환 해줌
*/
imm.hideSoftInputFromWindow(editText.windowToken,0)//키보드 내려감
반응형
'Android' 카테고리의 다른 글
[안드로이드/AdapterView] Spinner (0) | 2023.02.24 |
---|---|
[안드로이드/AdapterView] Custom Adapter (0) | 2023.02.23 |
[안드로이드/Style] 색상 지정 (0) | 2022.09.15 |
[안드로이드/AdapterView] Custom ListView (0) | 2022.09.14 |
[안드로이드/AdapterView] AdapterView의 개념과 ListView, GridView (0) | 2022.09.13 |