본문 바로가기
반응형

개발/Android45

[compose] TextField로 숫자 입력 시 VisualTransformation 사용하여 쉼표(,) 붙여주기 사용자로부터 숫자를 입력 받아야 하는 경우가 있습니다. 이때 가독성을 위해 세자리 단위마다 쉼표 (,) 를 찍어주는 것이 좋습니다. 예를 들어 숫자 1백만은 1000000이지만 1,000,000 으로 표기하는 것이 가독성에 좋습니다. 일반적으로 TextField의 onValuChange 함수를 통해 이를 대응하는 경우가 있는데, 아마도 원하는 결과가 쉽게 나오지 않을 것입니다. 특히 커서 움직임과 관련해서요. 커서를 이리저리 움직이고, 숫자를 입력/삭제해보면 의도치 않은 동작을 확인할 수 있습니다. Compose TextField에서는 사용자가 실제로 입력한 텍스트와 별개로 화면에 보여질 텍스트를 변환해주는 메커니즘을 제공하고 있습니다. 바로 VisualTransformation 인데요. VisualTr.. 2023. 4. 16.
Android EditText, TextView 코틀린 변환 시 JvmOverloads 쓰지 마세요 커스터마이징한 EditText가 필요해서 아래와 같이 코드를 작성하였는데 컴파일 에러나 런타임 에러는 없는데, 이상하게 원하는데로 동작하지가 않았다. class MyEditText @JvmOverloads constructor( context: Context?, attrs: AttributeSet? = null, defStyle: Int = 0 ) : AppCompatEditText(context!!, attrs, defStyle) 알고 보니 생성자를 아래와 같이 선언해야 한다. class MyEditText : AppCompatEditText(context!!, attrs, defStyle) { constructor(context: Context?) : super(context!!) {} constru.. 2020. 12. 16.
Android 코드로 Dark 모드 on/off binding.switchDarkMode.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) } else { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) } } 2020. 12. 16.
RecyclerView의 특정 아이템 위치로 이동하기 RecyclerView를 사용하면서 어떤 사용자 action 등에 의해 특정 아이템 위치로 스크롤할 필요가 있습니다. 이때 손 쉽게 사용할 수 있는 방법이 있는데, 아래와 같이 기본적으로 제공되는 scrollToPosition 함수를 사용하는 것입니다. // #1. RecyclerView.scrollToPosition(position: Int) // #2 RecyclerView.smoothScrollToPosition(position: Int) 이걸로 상황이 말끔히 해결된다면 그걸로 끝입니다. 하지만 때로는 위 함수로 부족한 경우가 있습니다. 예를 들어, 위 2개 함수를 통해 스크롤을 하게 되면 해당 아이템이 보이는 위치까지만 스크롤합니다. 다시 말해 내가 찾고자 하는 아이템을 최상단에 보여주도록 스크롤.. 2020. 11. 8.
반응형