이번 포스팅에서는 app 실행시 원하는 edit text에 focus를 주는 방법들을 알아보겠습니다. focus는 쉽게 말하면 해당 칸에 바로 커서가 가있는 것입니다. 초기 focus를 설정할수도 있고 해당 interface에 입력을 다하면 다음으로 focus를 넘길수도있습니다. 쉽게 app에 가입할때 정보들을 입력할때 완료시 자동으로 다음칸에 넘어가지는 기능입니다.
1. requestFocus()
kotlin 코드에서 layout과 연결시킨 변수.requestFocus()를 선언해주면 focus가 잡히게 됩니다. 공부하면서 사용한 코드는 다음과 같습니다.
editnum1 = findViewById(R.id.num1)
editnum1.requestFocus() // 최초 focus 주기
activity에서 다음 focus로 설정하는 방법은 focus를 넘겨줄 변수.nextFocusDownId = 받을 id 입니다. down 뿐만 아니라 forward, up, left, ritght가 있습니다. 코드는 다음과 같습니다.
editnum1 = findViewById(R.id.num1)
editnum1.requestFocus() // 최초 focus 주기
editnum2 = findViewById(R.id.num2)
editnum3 = findViewById(R.id.num3)
editnum2.nextFocusDownId = R.id.num3 // num2에서 num3로 focus 넘겨주기
*setFocusableTouchMode(true): edit text 외의 view에 focus 주고싶을시 미리 선언해줘야 합니다.
2. layout에서 설정
xml 파일의 edit text 부분의 하단에 <requsetFocus/> 를 추가해주는 방법입니다. 위 방법과 코드 위치만 다르지 효고는 동일합니다.
<EditText
android:id="@+id/num1"
android:hint="첫번째 숫자"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:inputType="number">
<requestFocus/>
</EditText>
focus 이동의 경우 nextFocusDown 과 다음 focus 대상의 id를 입력해주면 됩니다. down 외에도 up, left, right이 있습니다.
<EditText
android:id="@+id/num1"
android:hint="첫번째 숫자"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:inputType="number"
android:nextFocusDown="@id/num2">
<requestFocus/>
</EditText>
'안드로이드 > androidstudio' 카테고리의 다른 글
[Android]ViewPager2 현재 표시 화면 position 값 받기 (0) | 2022.11.06 |
---|---|
[Android]과거 project 오류 (0) | 2022.10.24 |
[Android] 입력 text 한글자씩 지우는 방법 (0) | 2022.10.22 |
[Android] 뒤로가기로 어플 종료 (0) | 2022.10.20 |
[android] 키보드 등장시키기 (0) | 2022.10.18 |