Activity 생명주기 알아보기
EditText
속성이름 | 설명 |
---|---|
autoLink | TextView 를 링크 형태로 사용 |
autoText | 텍스트 입력 시, 자동 오타 수정 가능 사용 |
breakStrategy | TextView 의 텍스트 줄넘김 정책 지정 |
capitalize | 알파벳 소문자 입력시, 대문자로 자동 변환 |
editable | 입력 가능 여부 지정 |
hint | TextView 의 텍스트가 빈 상태일 때, 출력될 텍스트 설정 |
numeric | 숫자만 입력 가능하게 만들기 |
password | 입력되는 텍스트 감추기. password dot 으로 표시 |
키보드를 다 입력하고 엔터를 누르니 2줄이 되어버리네요? 불편해요!
EditText의 text를 한 줄로 제한시키고 싶어요
엔터키를 누르면 다음 EditText 속성으로 넘어가고 싶어요 !
inputType = “text”
위 속성을 사용하면 1번도 만족 시키면서 2번도 충족할 수 있다.
키보드가 올라올 때 버튼을 가려요
키보드가 올라갈 때 화면도 같이 올라가면 편하겠죠?
android: windowSoftInputMode 에 대해 알아봅시다
우선 AndroidManifest.xml 에 추가해줘야 하는 속성이다
<activity
android:name=".SignUpActivity"
android:exported="false"
android:windowSoftInputMode="adjustNothing" />
adjustPan
소프트 키보드에 의해 EditText 가 가려지지 않도록 위쪽으로 이동한다.
adjustResize
소프트 키보드가 보이도록 공간을 확보하기 위해 activity window을 resize 한다. 작은 화면으로 압축하게 됨
주의점
resize 할 때 버튼이 키보드 위로 나오게 하고 싶다면 버튼을 parent에constraintLayout 으로 고정 시켜줘야 한다
adjustUnspecified
시스템이 상황에 맞게 adjustPan
or adjustResize
를 결정한다, 소프트 키보드의 기본 값이다.
adjustNothing
Layout 에 어떤 영향도 주지 않고 소프트 키보드가 올라온다. 화면이 가려지는 상태가 됨
배경 터치하면 키보드가 내려가야 하는거 아닌가요?
UX 제작해보기 ! 키보드를 숨기는 hideKeyboard() 함수를 만들고, 화면 클릭 이벤트에 넣어주세요 !
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySignupBinding.inflate(layoutInflater)
binding.root.setOnClickListener {
hideKeyboard()
}
setContentView(binding.root)
binding.btSignUpBtn.setOnClickListener {
signIn()
}
}
{...생략..}
fun hideKeyboard() {
if (this != null) {
val imm: InputMethodManager =
this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(
this.currentFocus?.windowToken,
InputMethodManager.HIDE_NOT_ALWAYS
)
}