Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Android 애드몹
- 파이어베이스
- Android
- 아키텍처
- 클린 아키텍처
- RecyclerView
- thread
- 안드로이드 카카오 지도
- 동적 링크
- Firebase
- 안드로이드 라이브러리
- 다이나믹 링크
- HTTP
- ImageView
- android kakao map
- dynamiclink
- 안드로이드
- 선언형UI
- 컴포넌트
- 애드몹배너
- 애드몹광고
- android daum map
- android 지도
- JetpackCompose
- Clean Architecture
- 젯팩컴포즈
- 안드로이드광고
- 안드로이드컴포즈
- glide
- component
Archives
- Today
- Total
코딩스토리
[Android/안드로이드] 키보드로 액티비티 화면 조정 adjustPan 본문
키보드를 올렸을 때 안에 있는 레이아웃이 전체적으로 움직이거나 고정시키고 싶을 때가 있습니다.
이번 포스팅에서는 키보드의 영향에 따라 레이아웃을 조정하는 코드를 작성해보겠습니다.
우선 키보드 화면조정의 속성에는 다음과 같습니다.
- Default(설정이 안 된 경우) : ajdustUnspecified와 stateUnspecified 적용됩니다.
- adjustPan : 키보드가 올라올 때 UI화면도 같이 위로 올라갑니다.
- adjustResize : 키보드가 올라갈 때 액티비티의 크기를 조정해줍니다.
- adjustUnspecified : 시스템이 알아서 상황에 맞는 옵션을 설정해줍니다.
- stateHidden : 액티비티를 실행했을 때 키보드가 자동으로 올라오는것을 방지합니다.
- stateVisible : 액티비티를 실행하면 키보드가 자동으로 올라옵니다.
- stateUnspecified : 시스템이 적절한 키보드 상태를 설정해줍니다.
위는 adjustPan을 적용한 것으로, 키보드가 올라갈 때 UI화면도 같이 올라가게 되는것을 확인할 수 있습니다.
manifests.xml
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustPan">
위는 adjustResize로 키보드가 올라갈 때 액티비티는 고정되어있습니다. 하지만 너무 고정되어있는 탓에 입력할 수 있는 EditText가 보이지 않아 문제가 있습니다.
manifest.xml
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustResize">
이 문제를 해결하기 위해서는 xml코드에서 레이아웃을 바꿔줘야합니다.
저는 최상위 레이아웃을 RelativeLayout로 만들어 준 뒤, EditText를 바닥에 붙여주니 다음과 같이 키보드 위에 EditText가 붙는 것을 확인할 수 있습니다.
SampleCode
RelativeLayout의 구성은 다은과 같습니다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_marginTop="5dp"
android:id="@+id/btn_hide_keyboard"
android:text="키보드 숨기기"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:layout_marginTop="5dp"
android:id="@+id/btn_show_keyboard"
android:text="키보드 보이기"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<View
android:layout_marginTop="5dp"
android:background="#AB98DC"
android:layout_width="match_parent"
android:layout_height="200dp"/>
<View
android:layout_marginTop="5dp"
android:background="#E4D972"
android:layout_width="match_parent"
android:layout_height="200dp"/>
<View
android:layout_marginTop="5dp"
android:background="#2A7495"
android:layout_width="match_parent"
android:layout_height="150dp"/>
</LinearLayout>
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:layout_constraintBottom_toBottomOf="parent" />
</RelativeLayout>
EditText만 바닥에 붙여주기만 하면 키보드 위에 붙도록 구현할 수 있습니다.
'Android > 유용한 기술' 카테고리의 다른 글
[Android/안드로이드] RecyclerView ItemDecoration으로 아이템 항목 구분지어주기 (0) | 2020.09.12 |
---|---|
[Android/안드로이드] RecyclerView LayoutManager타입별 사용하기 (0) | 2020.09.11 |
[Android/안드로이드] 키보드 보이기/키보드 숨기기를 제어하기 (0) | 2020.09.09 |
[Android/안드로이드] 현재시간부터 특정시간까지 카운트다운 세기 (0) | 2020.09.08 |
[Android/안드로이드] ViewPager 양쪽 뷰 살짝 보이게 만들기 (1) | 2020.09.07 |
Comments