일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Java
- Android WebView
- scope function
- DataBinding
- Android Jetpack
- 알고리즘 자바
- 영어독립365
- 안드로이드 카카오 로그인
- Kotlin FCM
- Android DataBinding
- 카카오 알고리즘
- 안드로이드
- Android 12
- 프로그래머스 알고리즘
- Android Navigation
- 안드로이드 갤러리 접근
- Android ProgressBar
- MVP Architecture
- WebView
- android recyclerview
- 안드로이드 fcm
- 습관만들기
- Android ViewPager2
- OkHttp Interceptor
- 66챌린지
- 영어공부
- Android Interceptor
- Android 12 대응
- Android
- Kotlin
Archives
- Today
- Total
Developer Geek
[Android] 키보드 숨기기 in Kotlin 본문
반응형
[Android] 키보드 숨기기 in Kotlin
UtilityKeyboard.kt
아래와 같이 프로젝트에 UtilityKeyboard
Object를 만들어서 각 함수를 정의하면 편리하게 Activity에서나 Fragment 또는 Context를 이용하여 편하게 키보드를 숨길 수 있다.
object UtilityKeyboard {
fun Fragment.hideKeyboard() {
view?.let { activity?.hideKeyboard(it) }
}
fun Activity.hideKeyboard() {
hideKeyboard(currentFocus ?: View(this))
}
fun Context.hideKeyboard(view: View) {
val inputMethodManager =
getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
}
}
사용 예제
참고). View 참조 방식은 ViewBinding을 이용하였다.
In Activity
개요
사용자는 보유하고 있는 포인트 안에서 사용할 만큼의 포인트를 입력한다.
단, 보유하고 있는 포인트보다 많은 값을 입력할 시 키보드는 숨겨지고 포인트 값은 보유하고 있는 최대 포인트가 입력된다.
실행영상
activit_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="10dp"
android:paddingVertical="20dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/use_point_title_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="포인트 사용"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/use_point_edit_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:hint="사용할 포인트를 입력하세요."
android:inputType="number"
android:paddingHorizontal="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/use_point_title_text_view" />
<TextView
android:id="@+id/max_point_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#DA0B0B"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/use_point_edit_text" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
class MainActivity : AppCompatActivity() {
private var binding: ActivityMainBinding? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
binding = activityMainBinding
setContentView(binding!!.root)
val maxPoint = 500
binding?.let {
it.maxPointTextView.text = "현재 보유중인 포인트는 $maxPoint 입니다."
// Implement TextWatcher's onTextChanged
it.usePointEditText.addTextChangedListener(onTextChanged = { text, start, before, count ->
if (text != null) {
val point = text.toString().toInt()
if (point > maxPoint) {
/** 키패드 내리기 */
this.hideKeyboard()
/** 사용금액 [maxPoint]값으로 변경*/
it.usePointEditText.setText(maxPoint.toString())
/** 커서 끝으로 이동 */
it.usePointEditText.setSelection(it.usePointEditText.text.length)
}
}
})
}
}
override fun onDestroy() {
super.onDestroy()
binding = null
}
}
질문과 잘못된 점에 대해 말씀해주시는 건 언제나 환영입니다.
zero5.two4@gmail.com
반응형
'안드로이드 > Utility' 카테고리의 다른 글
[Android] Facebook 로그인(1) 셋팅 in Kotlin (0) | 2022.12.07 |
---|
Comments