📱테스트 환경
Samsung Galaxy Android 13 • Android 10
😢 내가 겪은 문제
채팅방 형식의 레이아웃을 만들고 있어서 채팅입력 레이아웃이 필요했다. 그래서 Web 의 Input 필드를 만들고 싶었다.
EditText 가 뭔지도 몰랐던 나는 TextView 에 키보드 띄워놓고 입력할때마다 반영하려고 했다. 무식하기 그지없다.
그러다가 EditText 를 알게 되었는데, 일단 이게 뭔지 설명하자면 사용자가 텍스트를 입력하고 수정할 수 있는 텍스트 입력 필드이다.
Web 의 Input 필드와 같은 역할을 하는 것 같은데, 이걸 사용하면 쉽게 할 수 있다.
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/white"
android:gravity="center_vertical"
android:cursorVisible="true"
android:focusableInTouchMode="true"
android:layout_alignParentBottom="true"
app:layout_constraintBottom_toBottomOf="parent"
android:text="" />
나는 이제 입력 필드를 화면 바닥에 고정시켜놓고 사용하기 위해 이렇게 디자인을 했는데 디자인은 알아서 필요에 맞게 수정하면된다.
근데 RecyclerView 를 사용하고 있는데 키보드가 올라오면 뷰가 가려지는 문제가 발생했다.
인터넷에 열심히 검색해보니 이런 해결 방법이 있었다.
android:windowSoftInputMode="adjustPan"
AndroidManifest.xml 가서 해당 activity 를 찾아서 작성해주면된다.
<activity
android:name=".ContentsActivity"
android:windowSoftInputMode="adjustPan"
android:exported="false">
</activity>
근데 adjustPan 을 사용하면 문제가 위 아래가 짤리게 되는 아주아주 큰 문제가 발생한다.
이런 문제를 해결하기 위해서는 adjustPan 보다는 adjustResize 를 사용하면된다. ( 애초에 adjustResize 가 더 좋은 방법 ! )
<activity
android:name=".ContentsActivity"
android:windowSoftInputMode="adjustResize"
android:exported="false">
</activity>
이렇게해주면 뷰도 안가리고, 위아래 짤리지도 아주 편 - 안하다.
EditText 에 있는 Text 를 꺼내는 방법은 다른 방법들과 차이가 없다.
val sendMessage = findViewById<EditText>(R.id.sendMessage)
val messageText = sendMessage.text.toString()
메시지를 보냈으면, EditText 창을 비워줘야 비로소 끝난다고 할 수 있다.
비우는 방법도 코드 한줄이면 아주 깔끔하게 처리할 수 있다.
sendMessageEditText.text.clear()
'Kotlin' 카테고리의 다른 글
[Kotlin] 앱, 패키지 설치 여부 확인하는 방법 (2) | 2023.10.16 |
---|---|
[Kotlin] 안드로이드 앱 패키지명 확인하는 방법 (0) | 2023.10.16 |
[Kotlin] Google PlayStore 이동하기 (0) | 2023.09.18 |
[Kotlin] scaleType ? (0) | 2023.09.07 |
[Kotlin] Transaction too large 에러 해결방법 (0) | 2023.08.13 |