반응형
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>
반응형
'안드로이드' 카테고리의 다른 글
[Android Studio] 뷰 화면 캡쳐하기 (코틀린) (0) | 2023.11.14 |
---|---|
[Android Studio] TextWatcher Utils 로 사용하기 (코틀린) (1) | 2023.11.03 |
[Android Studio] TextView Drawable 동적으로 수정하기 (코틀린) (0) | 2023.10.12 |
[Android Studio] Padding 값 동적으로 변경하기 (코틀린) (0) | 2023.09.21 |
[Android Studio] List< Object > 조건에 따라 리스트 중복제거 (코틀린) (0) | 2023.09.15 |