본문 바로가기
안드로이드

[Android Studio] TextInputLayout Custom 사용하기 !

by 개발_블로그 2023. 11. 3.
반응형

 

TextInputLayout 을 사용해야 할 때 코드입니다. 

 

기본 코드 

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/til"
    android:layout_width="@dimen/match_constraint"
    android:layout_height="wrap_content">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/tie"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/> 

</com.google.android.material.textfield.TextInputLayout>

 

 

 

TextInputLayout  테두리 색상변경 

parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox"  이 부분 중요합니다.

<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">

    <item name="boxStrokeColor">@color/selector_text_input_color</item> // 테두리 라인 색상
    <item name="boxStrokeWidth">@dimen/size01</item> // 테두리 라인 크기

</style>

selector (selector_color) 추가 

 

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/red" android:state_focused="true" /> // editText 에 입력할 수 있을 때 
    <item android:color="@color/red" android:state_hovered="true" /> // focused 와 똑같은 역할 (맴돌다 라는 뜻)
    <item android:color="@color/red" android:state_enabled="false" /> // 터치나 클릭 이벤트를 사용할 수 있을 때 
    <item android:color="@color/black" /> // 기본 색상
</selector>

 

Radius 추가 

<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">

    <item name="boxStrokeColor">@color/selector_color</item> // 테두리 라인 색상
    <item name="boxStrokeWidth">1dp</item> // 테두리 라인 크기
    
    // radius
    <item name="boxCornerRadiusTopStart">8dp</item>
    <item name="boxCornerRadiusTopEnd">8dp</item>
    <item name="boxCornerRadiusBottomStart">8dp</item>
    <item name="boxCornerRadiusBottomEnd">8dp</item>

</style>

 

Error 메세지 사용할 시 

 


<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">

    <item name="boxStrokeColor">@color/selector_color</item> // 테두리 라인 색상
    <item name="boxStrokeWidth">1dp</item> // 테두리 라인 크기
    
    // radius
    <item name="boxCornerRadiusTopStart">8dp</item>
    <item name="boxCornerRadiusTopEnd">8dp</item>
    <item name="boxCornerRadiusBottomStart">8dp</item>
    <item name="boxCornerRadiusBottomEnd">8dp</item>
    
    // error
    <item name="errorEnabled">true</item> // 에러 사용할지 안할지 설정
    <item name="colorError">@color/red</item> // 에러 text 색상
    <item name="errorIconDrawable">@null</item> // 에러 이미지
    <item name="errorTextAppearance">@style/....</item> // 에러 폰트 스타일


</style>

 

Hint 설정 (true 로 설정할 시 테두리 안에 힌트가 들어감. false 선택시 안들어가게 설정 )

 

<!-- 힌트 -->
<item name="hintEnabled">false</item>

 

 

TextInputLayout  전체 코드

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/til"
    style="@style/TextInputLayoutStyle"
    android:layout_width="@dimen/match_constraint"
    android:layout_height="wrap_content">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/tie"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/> 

</com.google.android.material.textfield.TextInputLayout>

 

 

반응형