Android
TextInputLayout
수색…
소개
TextInputLayout은 EditText에 플로팅 레이블을 표시하기 위해 도입되었습니다. 플로팅 레이블을 표시하려면 EditText를 TextInputLayout으로 래핑해야합니다.
비고
TextInputLayout 은 사용자 입력 텍스트로 인해 힌트가 숨겨져있을 때 EditText (또는 자손)를 래핑하여 플로팅 레이블을 표시하는 레이아웃입니다. 또한 TextInputLayout 사용하면 EditText 아래에 오류 메시지를 표시 할 수 있습니다.
종속성에 따라 앱의 build.gradle 파일에 다음 종속성이 추가되었는지 확인하십시오.
compile 'com.android.support:design:25.3.1'
기본 사용법
TextInputLayout 의 기본 사용법입니다.
설명 섹션에 설명 된대로 build.gradle 파일에 종속성을 추가하십시오.
예:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username"/>
</android.support.design.widget.TextInputLayout>
오류 처리
TextInputLayout 을 사용하여 setError 및 setErrorEnabled 메소드를 사용하여 머티리얼 디자인 지침 에 따라 오류 메시지를 표시 할 수 있습니다.
EditText 아래에 오류를 표시하려면 다음을 사용하십시오.
TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setErrorEnabled(true);
til.setError("You need to enter a name");
TextInputLayout 에서 오류를 사용하려면 xml 또는 til.setErrorEnabled(true); 에서 app:errorEnabled="true" 를 사용할 수 있습니다 til.setErrorEnabled(true); 위에 표시된대로.
당신은 얻을 것이다 :
문자 계수 추가하기
TextInputLayout에는 그 안에 정의 된 EditText에 대한 문자 카운터 가 있습니다.
카운터는 EditText 아래에 렌더링됩니다.
setCounterEnabled() 및 setCounterMaxLength 메서드를 사용하면됩니다.
TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setCounterEnabled(true);
til.setCounterMaxLength(15);
또는 xml의 app:counterEnabled 및 app:counterMaxLength 속성
<android.support.design.widget.TextInputLayout
app:counterEnabled="true"
app:counterMaxLength="15">
<EditText/>
</android.support.design.widget.TextInputLayout>
비밀번호 공개 여부 전환
입력 암호 유형을 사용하면 passwordToggleEnabled 속성을 사용하여 전체 텍스트를 표시하거나 숨길 수있는 아이콘을 활성화 할 수도 있습니다 .
다음 속성을 사용하여 동일한 기본값을 사용자 정의 할 수도 있습니다.
-
passwordToggleDrawable: 기본 눈 모양 아이콘을 변경하려면 -
passwordToggleTint: 암호 가시성 전환 가능 드로잉에 색조를 적용합니다. -
passwordToggleTintMode: 배경 색조를 적용하는 데 사용되는 혼합 모드를 지정합니다.
예:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleContentDescription="@string/description"
app:passwordToggleDrawable="@drawable/another_toggle_drawable"
app:passwordToggleEnabled="true">
<EditText/>
</android.support.design.widget.TextInputLayout>
TextInputEditText
TextInputEditText 는 '추출'모드에 있을 때 IME에서 힌트를 표시하는 추가 수정 기능이있는 EditText 입니다.
추출 모드 는 공간이 너무 작을 때 (예 : 스마트 폰의 경치) EditText를 클릭 할 때 키보드 편집기가 전환되는 모드입니다.
이 경우 텍스트를 편집하는 동안 EditText 를 사용하면 IME가 편집중인 것을 알 수 없다는 것을 알 수 있습니다.
TextInputEditText 는 사용자 장치의 IME가 추출 모드 인 동안 힌트 텍스트를 제공하여이 문제를 해결합니다.
예:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Description"
>
<android.support.design.widget.TextInputEditText
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
TextInputLayout의 모양 사용자 정의
styles.xml 에서 사용자 정의 스타일을 정의하여 TextInputLayout 및 포함 된 EditText 의 모양을 사용자 정의 할 수 있습니다. 정의 된 스타일은 TextInputLayout 스타일 또는 테마로 추가 할 수 있습니다.
힌트 모양 사용자 정의 예 :
styles.xml :
<!--Floating label text style-->
<style name="MyHintStyle" parent="TextAppearance.AppCompat.Small">
<item name="android:textColor">@color/black</item>
</style>
<!--Input field style-->
<style name="MyEditText" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
스타일을 적용하려면 다음과 같이 TextInputLayout 및 EditText를 업데이트하십시오.
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintTextAppearance="@style/MyHintStyle">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/Title"
android:theme="@style/MyEditText" />
</android.support.design.widget.TextInputLayout>
TextInputLayout 의 액센트 색상을 사용자 정의하는 예제입니다. 강조 색상은 EditText 의 기준선 색상과 부동 힌트 텍스트의 텍스트 색상에 영향을줍니다.
styles.xml :
<style name="TextInputLayoutWithPrimaryColor" parent="Widget.Design.TextInputLayout">
<item name="colorAccent">@color/primary</item>
</style>
레이아웃 파일 :
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextInputLayoutWithPrimaryColor">
<android.support.design.widget.TextInputEditText
android:id="@+id/textInputEditText_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login_hint_password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
