FocusRequester란? FocusRequester란 컴포즈 상에서 컴포저블(View)의 Focus를 바꿔주는 객체이다. 예를 들어 Button이 눌렸을 때 포커스가 TextField로 가야하는 경우 사용된다. FocusRequester 사용법 1. FocusRequester을 Composable 내의 remember 블록에서 선언한다. 2. Modifier.focusRequester() 함수를 이용해 위에서 만든 focusRequester을 포커스를 주기 원하는 곳에 붙인다. 3. 특정 이벤트가 발생했을 때 포커스 주기를 원하면 requestFocus()을 붙인다. @Composable fun KotlinWorldFocusRequester() { .. val focusRequester = reme..
Android Jetpack Compose/Compose
Layout에 LTR RTL 옵션을 주는 방법 Compose의 LTR, RTL 옵션을 변경하는 방법은 CompositionLocalProvider을 이용하는 것이다. CompositionLocalProvider의 vararg로 ProvidedValue 객체를 넘길 수 있는데 이에 대해 LayoutDirectiion.Rtl을 넘기면 RTL이 설정된다. CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) 이제 Rtl이 적용되길 원하는 레이아웃을 CompositionLocalProvide로 감싸면 완성된다. @Preview(showBackground = true, widthDp = 300, heightDp = 300) @Com..
Stateless한 Compose의 TextField TextField란 텍스트를 입력하는 UI이다. 이 UI는 두가지 부분으로 구성된다. 텍스트를 입력하는 부분(User Interaction) 텍스트를 저장하는 부분(State) 텍스트를 입력하려면 TexrField에 입력된 Text의 상태(State)가 있어야 한다. 기존의 xml에서의 TextField는 Stateful해서 자신의 Text 상태를 직접 저장했다. 즉 위 두가지 부분이 모두 TextField에 존재했다. 하지만, Compose는 Stateless하기 때문에 TextField에는 Text의 상태를 저장하는 공간이 없다. 즉, Compose의 TextField는 텍스트를 입력하는 부분만 있고, 텍스트를 저장하는 부분이 없다. Textfie..
Scaffold란? Snackbar을 원하는대로 만들기 위해서는 Scaffold Layout을 알아야 한다. Scaffold란 Material Component들을 편하게 사용할 수 있도록 하기 위해 미리 디자인된 레이아웃이다. Snackbar도 Material Component이므로 Compose에서 Snackbar을 기존 Snackbar의 동작대로 이용하기 위해서는 Scaffold State로 감싸야 한다. 만약 Scaffold로 감싸지 않으면 보통의 Composable과 똑같이 동작한다. Snackbar 만들기 Snackbar을 만들기 위한 Composable을 먼저 정의해보자. 우리의 목표는 TextField와 Button을 두고 Button을 눌렀을 때 TextField 속의 Text가 Snac..
Jetpack Compose의 등장과 중요성 Jetpack Compose는 Android의 차세대 UI라이브러리로 직관적인 코드를 통해 UI를 그려줄 수 있다는 점과, Stateless한 UI를 그려줄 수 있다는 점을 특징으로 가지고 있다. Google에서는 Kotlin이 안드로이드의 공식 언어로 지정되었을 때만큼 Compose를 밀어주고 있으며 이후 모든 안드로이드의 UI 코드는 Compose로 작성될 것이 명확해 보인다. 하지만 Compose는 나온지 오랜 시간이 되지 않아 양질의 자료를 찾아보기가 힘들다. 영문으로도 양질의 자료를 찾아보기 힘든데, 한글로 된 양질의 자료는 없다시피 하다. 현재 구글에 검색하면 나오는 자료들은 모두 Codelab을 따라하는 문서들 뿐 Compose에 대해 자세히 다룬..