Activity 생명주기 알아보기

EditText

속성이름 설명
autoLink TextView 를 링크 형태로 사용
autoText 텍스트 입력 시, 자동 오타 수정 가능 사용
breakStrategy TextView 의 텍스트 줄넘김 정책 지정
capitalize 알파벳 소문자 입력시, 대문자로 자동 변환
editable 입력 가능 여부 지정
hint TextView 의 텍스트가 빈 상태일 때, 출력될 텍스트 설정
numeric 숫자만 입력 가능하게 만들기
password 입력되는 텍스트 감추기. password dot 으로 표시

키보드를 다 입력하고 엔터를 누르니 2줄이 되어버리네요? 불편해요!

  1. EditText의 text를 한 줄로 제한시키고 싶어요

    1. singleLine
    2. inputType = “text”
    3. lines = “3” : lines 의 경우는 처음부터 3줄 사이즈를 확보하여 출력된다
    4. maxLines = “3”: 이 경우는 1줄 사이즈로 출력되지만 실제로 입력하면서 늘어난다.
  2. 엔터키를 누르면 다음 EditText 속성으로 넘어가고 싶어요 !

    inputType = “text”

    위 속성을 사용하면 1번도 만족 시키면서 2번도 충족할 수 있다.

키보드가 올라올 때 버튼을 가려요

  1. 키보드가 올라갈 때 화면도 같이 올라가면 편하겠죠?

    android: windowSoftInputMode 에 대해 알아봅시다

    우선 AndroidManifest.xml 에 추가해줘야 하는 속성이다

    <activity
                android:name=".SignUpActivity"
                android:exported="false"
                android:windowSoftInputMode="adjustNothing" />
    
    1. adjustPan 소프트 키보드에 의해 EditText 가 가려지지 않도록 위쪽으로 이동한다.

    2. adjustResize 소프트 키보드가 보이도록 공간을 확보하기 위해 activity window을 resize 한다. 작은 화면으로 압축하게 됨

      주의점

      resize 할 때 버튼이 키보드 위로 나오게 하고 싶다면 버튼을 parent에constraintLayout 으로 고정 시켜줘야 한다

    3. adjustUnspecified 시스템이 상황에 맞게 adjustPan or adjustResize 를 결정한다, 소프트 키보드의 기본 값이다.

    4. adjustNothing Layout 에 어떤 영향도 주지 않고 소프트 키보드가 올라온다. 화면이 가려지는 상태가 됨

배경 터치하면 키보드가 내려가야 하는거 아닌가요?

  1. 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
                )
            }
    

    [안드로이드 kotlin] 소프트 키보드 내리기(activity, custom dialog)

    [Android] editText 바깥 부분을 클릭하면 키보드 내려가게 하는 법