답변:
구글이 도입 된 이후 타사 라이브러리를 사용할 필요가 없습니다 TextInputLayout
의 등 부분은 design-support-library
.
기본 예를 따르면 :
<android.support.design.widget.TextInputLayout
android:id="@+id/text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter your name" />
</android.support.design.widget.TextInputLayout>
참고 :app:errorEnabled="true"
속성으로 설정 TextInputLayout
하면 오류가 표시되면 크기가 변경되지 않으므로 기본적으로 공간을 차단합니다.
아래에 오류를 표시 EditText
하려면 간단히 (자식 없음 ) 을 호출하면 #setError
됩니다 .TextInputLayout
EditText
TextInputLayout til = (TextInputLayout) findViewById(R.id.text_input_layout);
til.setError("You need to enter a name");
오류를 숨기고 색조를 재설정하려면을 호출하면 til.setError(null)
됩니다.
를 사용하려면 종속성에 TextInputLayout
다음을 추가해야합니다 build.gradle
.
dependencies {
compile 'com.android.support:design:25.1.0'
}
기본적으로의 줄은 EditText
빨간색입니다. 다른 색상을 표시해야하는 경우 전화를 걸 자마자 다음 코드를 사용할 수 있습니다 setError
.
editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);
지우려면 간단히 clearColorFilter
다음과 같이 함수 를 호출하십시오 .
editText.getBackground().clearColorFilter();
textInputLayout.setError("Error messsage")
색상을 호출 하는 즉시 색상 필터를 더 이상 설정할 필요가 없습니다 EditText
. 재설정하기 위해서는 호출하기에 충분합니다 textInputLayout.setError(null)
.
editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);
최신 지원 라이브러리에 더 이상 필요하지 않습니다
EditText
습니다 TextInputLayout
. 나는이 답변을 보았지만 여전히 내가 변경해야 할 것을 알 수 없었습니다. 놓치기 쉬운 것.
당신 EditText
은에 싸여 있어야합니다TextInputLayout
<android.support.design.widget.TextInputLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tilEmail">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:ems="10"
android:id="@+id/etEmail"
android:hint="Email"
android:layout_marginTop="10dp"
/>
</android.support.design.widget.TextInputLayout>
원하는 오류 메시지를 얻으려면 error를 TextInputLayout
TextInputLayout tilEmail = (TextInputLayout) findViewById(R.id.tilEmail);
if (error){
tilEmail.setError("Invalid email id");
}
설계 지원 라이브러리 종속성을 추가해야합니다. gradle 의존성 에이 줄을 추가하십시오
compile 'com.android.support:design:22.2.0'
reVerse의 대답은 훌륭하지만 부동 오류 툴팁 종류를 제거하는 방법을 지적하지 않았습니다.
당신은 그것을 edittext.setError(null)
제거 해야 합니다.
또한 누군가 지적했듯이 필요하지 않습니다.TextInputLayout.setErrorEnabled(true)
나열한 것
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter something" />
</android.support.design.widget.TextInputLayout>
암호
TextInputLayout til = (TextInputLayout) editText.getParent();
til.setError("Your input is not valid...");
editText.setError(null);
TextInputLayout til = (TextInputLayout)editText.getParent();
til.setErrorEnabled(true);
til.setError("some error..");
private EditText edt_firstName;
private String firstName;
edt_firstName = findViewById(R.id.edt_firstName);
private void validateData() {
firstName = edt_firstName.getText().toString().trim();
if (!firstName.isEmpty(){
//here api call for ....
}else{
if (firstName.isEmpty()) {
edt_firstName.setError("Please Enter First Name");
edt_firstName.requestFocus();
}
}
}
EditText
. 아마도 랩핑EditText
하거나 추가 할 무언가가 필요할 것입니다 . github.com/rengwuxian/MaterialEditText를 참조하십시오 .