Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

yourginieus

User Interactivity : 사용자와 상호작용 - 키보드 보이기, 숨기기 본문

Android/Android Kotlin 기초 실습 정리

User Interactivity : 사용자와 상호작용 - 키보드 보이기, 숨기기

EOJIN 2022. 10. 25. 18:56
  • 사용자가 텍스트를 입력하는 방법 : EditText
    • TextView는 사용자에게 텍스트를 입력받을 수 없음
    • input을 허용하기 위해서는, edit text라는 UI를 사용해야 함
    • EditText를 사용하면 됨 - TextView의 subclass!
    • EditText에 나타나는 밑줄은 해당 내용이 editable함을 나타냄
    • hint : EditText에 나타나는 기본 힌트 설정. 사용자는 이 힌트를 통해 어느 값을 입력해야 하는지 알 수 있음
    • inputType : 사용자가 입력할 수 있는 입력 유형을 지정함 - 유형에 따라 적절한 입력필드와 화면상의 키보드를 표시해 줌
      • textPassword, phone, textPersonName, date, number 등
  • 버튼을 이용하여 사용자와 소통
    • Button : 사용자가 탭하여 작업을 수행할 수 있는 UI 요소
    • Button 안의 글자는 text 속성을 이용해 설정 가능
    • style을 Widget.AppCompat.Button.Colored 으로 지정하면 기존의 accent color로 버튼 색상을 바꿔 줌(accent color는 res/values/colors에서 설정)
    • 폰트 설정은 fontFamily 속성을 통해 설정
<Button
   android:id="@+id/done_button"
   style="@style/Widget.AppCompat.Button.Colored"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center_horizontal"
   android:layout_marginTop="@dimen/layout_margin"
   android:fontFamily="@font/roboto"
   android:text="@string/done" />

**layout_gravity : 뷰를 상위 레이아웃 기준으로 어디에 위치할건지 지정

  • 버튼에 클릭 리스너 추가
    • Activity 파일에서 구현
    • 보통 클릭했을 때 실행되는 함수를 만들어놓고 그걸 setOnClickListener에 넣어 줌
      • setOnClickListener에 넣거나, layout 파일에서 android:onClick 속성에 그 함수를 지정해주면 됨 
private fun clickHandlerFunction(viewThatIsClicked: View) {
// Add code to perform the button click event
}

myButton.setOnClickListener {
   clickHanderFunction(it)
}
<Button
   android:id="@+id/done_button"
   android:text="@string/done"
   ...
   android:onClick="clickHandlerFunction"/>

**예시 코드

private fun addNickname(view: View) {
	val editText = findViewById<EditText>(R.id.nickname_edit)
    val nicknameTextView = findViewById<TextView>(R.id.nickname_text)
    nicknameTextView.text = editText.text
    editText.visibility = View.GONE
    view.visibility = View.GONE
    nicknameTextView.visibility = View.VISIBLE
}

findViewById<Button>(R.id.done_button).setOnClickListener {
            addNickname(it)
}

-> 그런데 버튼을 탭해도 editText의 키보드는 계속 표시 됨!

  • 키보드 숨기기
    • 클릭리스너의 마지막에 다음 코드를 추가함
// Hide the keyboard.
val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
  • 이후 다시 editText를 visible로 설정하면, editText 뷰에 포커스를 두고 키보드를 표시하는 방법
    • visible로 설정하는 클릭리스너 마지막에 requestFocus() 메소드 사용
// Set the focus to the edit text.
editText.requestFocus()

// Show the keyboard.
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(editText, 0)


  • visibility
    • 뷰를 보이게 하거나 안 보이게 하거나!
    • visible : 뷰가 표시 됨
    • Invisible : 뷰를 숨기지만, 레이아웃 내의 공간은 차지함
    • gone : 뷰를 숨기고 공간도 차지XX

 

https://developer.android.com/codelabs/kotlin-android-training-interactivity?index=..%2F..android-kotlin-fundamentals&hl=ko#0 

 

Comments