계산기 엑스 - 가볍고도 강력한 계산기 - Google Play 앱
가볍지만 꼭 필요한 기능들과 강력한 성능을 제공하고, 단순하지만 세련된 UI로 친숙하고도 편리하게 업무를 도와주는 계산기 엑스입니다.
play.google.com
안드로이드 스튜디오 (Android Studio), 코틀린 (Kotlin) 관련 코딩 팁들을 공유드리고 있습니다.
이번 포스팅에서는 에디트 텍스트 (EditText)의 커서, 하이라이트, 핸들의 색상을 변경하는 3가지 방법에 대해 소개해 드리겠습니다.
먼저 커서, 하이라이트, 핸들이 무엇을 가리키는지 정확히 알아보겠습니다.
커서는 아래 그림에서처럼 텍스트가 입력되는 위치에 깜빡이는 긴 막대기 모양의 형체를 말합니다. Handle(핸들) 은 입력창을 터치했을 때 잠시 나타나는 아래 물방울 모양의 형태를 띠는 것을 말합니다.

하이라이트는 아래 그림에서처럼 텍스트의 영역이 선택되었을때 음영 부분을 말하고, 음영 끝의 좌, 우로 기울어진 물방울 모양의 형체들이 각각 HandleLeft, HandleRight입니다.

커서, 하이라이트, 핸들의 색을 변경하는 방법에는 style 변경, xml에서 변경, code로 변경하는 세 가지 방법이 있습니다.
1. Theme 변경
가장 간단한 방법입니다. res/values/styles.xml에서 "appTheme"의 colorAccent를 변경해 줍니다. 커서와 핸들의 색상이 지정한 색상으로 변경됩니다.
| <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/darkBlue</item> </style> |
2. xml에서 변경
커서와 핸들의 경우 drawable image를 만들어 변경하는 방법입니다. 커서와 핸들의 색상뿐아니라 모양도 변경할 수 있습니다.
2-1. 커서
커서 색생을 변경하려면 drawable/cursor.xml을 아래와 같이 만들어 줍니다. width는 커서의 두께를 의미합니다.
| <shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="3dp" /> <solid android:color="@color/darkBlue" /> </shape> |
EditText에 다음 음영 부분을 삽입하면 적용됩니다.
| <EditText ... android:textCursorDrawable="@drawable/cursor"/> |
2-1. 하이라이트
EditText에 다음 음영 부분을 삽입하면 적용됩니다.
| <EditText ... android:textColorHighlight="@color/darkBlue"/> |
2-3. 핸들
커서 색생을 변경하려면 drawable/handle.xml을 아래와 같이 만들어 줍니다.
| <shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:width="20dp" /> <size android:width="20dp" /> <solid android:color="@color/darkBlue" /> </shape> |
위처럼 하면 가로, 세로 20dp의 정사각형 모양 핸들이 만들어집니다. 물방울 모양 등 복잡한 모양의 핸들을 만드려면 image asset으로 등록하셔야 합니다. 기본 형태처럼 Handle, HandleLeft, HandleRight의 모양을 다르게 하고 싶다면 세 개의 image asset이 필요합니다.
EditText에 다음 음영 부분을 삽입하면 적용됩니다. Handle, HandleLeft, HandleRight을 따로 등록하였다면 각각의 drawaable 이름을 적어 주시면 됩니다.
| <EditText ... android:textSelectHandle="@drawable/handle android:textSelectHandleLeft="@drawable/handle android:textSelectHandleRight="@drawable/handle/> |
3. code 로 변경
2. xml로 변경하는 방법과 유사하지만 run time 중 동적으로 바꿀 수 있는 장점이 있습니다.
3-1. 커서
cursor.xml 만들기까지는 2-1. 에서와 동일하며 코드에 아래 부분을 삽입합니다. setTextCursorDrawable은 version Q 이상에서만 사용 가능합니다.
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { myEditText.setTextCursorDrawable(R.drawable.cursor) } |
3-2. 하이라이트
코드에 아래 부분을 삽입합니다.
| mainWinET.highlightColor = R.color.darkBlue |
3-3. 핸들
handle.xml 만들기 까지는 2-3. 에서와 동일하며 코드에 아래 부분을 삽입합니다.
| myEditText.setTextSelectHandle(R.drawable.handle) myEditText.setTextSelectHandleLeft(R.drawable.handle) myEditText.setTextSelectHandleRight(R.drawable.handle) |
댓글