TextInputLayout, TextInputEditText에 색 지정하기

2020. 2. 2. 11:57안드로이드 개발

Material Design 2.0에서는 과거의 EditText보다는 TextInputLayout과 그 하부에 TextInputEditText를 권장하고 있다. 따로 해당 EditText에 설명을 적을 필요 없이 hint에 적은 게 위로 올라가기도 하고 EditText 영역이 딱 약간의 음영이 지정되기도 하니까 보기에도 좋다. 그런데 아직 쓰는 사람이 많지 않아서인지 속성 색 지정하는 법을 잘 찾을 수 없어 겨우겨우 찾은 끝에 깔끔하게 정리해두기로 했다.

 

별도의 표기가 없으면 TextInputLayout의 속성을 지칭하고 있다.

터치 전, 사용하지 않을 때의 속성

터치 후, 텍스트 입력을 하고 있는 상태일 때

터치 후, 텍스트 입력 중 오류를 발생시켰을 때 (setError("에러 메시지"))

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/et_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:hintTextColor="@color/color_ienlab_pink"
        app:boxStrokeColor="@color/color_ienlab_skyblue"
        android:textColorHint="@color/color_ienlab_purple"
        app:boxBackgroundColor="@color/color_ienlab_blue"
        app:errorTextColor="@color/teal"
        app:boxStrokeErrorColor="@color/color_rss">
        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textCursorDrawable="@drawable/rss_et_cursor"
            android:hint="@string/nickname" />
    </com.google.android.material.textfield.TextInputLayout>

 

보기 쉽게 색으로 구별해 두었다. 이 정도 속성이면 쓰는데 큰 불편함이 없을 것 같다. 주의할 점은 android:textCursorDrawable은 컬러 코드를 받는 게 아니고 Drawable을 요구하기 때문에, 별도의 Drawable xml 파일이 필요하다. 아래에 그 코드를 첨부해 두었다.

<!-- TextInputEditText Cursor Drawable -->

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/navigationBarColorGreen" />
    <size android:width="1.5dp" />
</shape>
1 2 3 4 5 6 7 ··· 83