android EditText 커서 색상, 위치 밑줄 설정에 대한 이야기
android EditText 커서 색상, 위치 밑줄 설정에 대한 이야기
아직도 아이폰과 헷갈려하며 하나 하나 찾아가면서 UI작업을 하는 안드로이드. 어제는 EditText란 녀석에 대해 심화(?) 학습을 한 셈이었다. 뚱딴지 같이 밑줄이 나오질 않나 자동으로 포커싱이 가 있질 않나 생각보다 높이가 높지를 않나... 살짝 맨붕이었는데 하나 하나 찾아가면서 해결하다 보니 재미가 솔솔하다.
EditText는 여러 속성이 있는데 먼저 Activity가 올라올 때 커서가 위치 하지 않도록 조정하는 방법인데 이건 EditText의 설정이라기 보다 EditText를 포함한 상위 레이아웃박스에 focusableInTouchMode 의 속성을 true 설정해서 EditText가 포커스를 잃도록 하는 방법이 있다.
EditText를 포함하고 있는 <LinearLayout의 속성을 설정하면 해결된다.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp" android:background="#eee">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/round_couner"
android:orientation="horizontal"
android:focusableInTouchMode="true">
<EditText
android:layout_width="match_parent"
android:layout_height="34dp"
android:lines="1"
android:inputType="text"
android:hint="검색"
android:textSize="16dp"
android:background="@android:color/transparent"
android:layout_gravity="center_vertical"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:textColor="@color/common_google_signin_btn_text_dark_focused"
android:textCursorDrawable="@drawable/edit_text_cursor_color"
/>
</LinearLayout>
그 다음으로 기본 EditText의 높이가 생각보다 높다. 그건 아마 기본적으로 백그라운드에 뭔가가 들어가 있어서 그런 것 같다. 그건 EditText의 background를 설정해주는 것으로 해결이 가능하다.
android:background="@android:color/transparent"
또는
android:background="@null" 을 적용해서 해결할 수 있다.
EditText의 placeholder는 hint속성을 이용하면 되고,
커서의 색상을 바꾸고 싶을 때는 @drawable을 이용해서 textCursorDrawable을 설정해주면 된다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FF493334" />
<size android:width="1dp" />
</shape>
solid android:color=""로 설정한 값이 깜박이는 커서의 색상이 된다.
2018/11/23 - [Programming/Android] - 안드로이드 둥근 모서리 레이아웃 만드는 방법(@drawable)
알쏭달쏭 재미있는 안드로이드 UI작업. xml로 코딩을 하면서 해야하는 번거로움이 있지만 나름 재미있다.