TextInputLayout工作正常,当试图设置Error时显示错误。
代码:
EndpointAddress endpoint = new EndpointAddress( "https://api.e-conomic.com/secure/api1/economicwebservice.asmx" );
检查记录:
if (etFirstName.getText().length() == 0) {
etFirstName.requestFocus();
tvFirstName.setError("Please enter firstname");
} else {
tvFirstName.setError(null);
tvFirstName.setErrorEnabled(false);
}
答案 0 :(得分:10)
虽然我没有完全理解为什么会出现这个问题,但是必须要根据Android的状态对视图应用颜色的方式做些什么。
以下是解决问题的方法:
在res/values/styles.xml
添加新样式节点中:
<style name="error" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/colorAccent</item> <!--apply the color you wat here -->
<item name="android:textSize">12dp</item>
</style>
TextInputLayout
:另外,请确保指定errorEnabled
属性:
<android.support.design.widget.TextInputLayout
android:id="@+id/input_email_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:errorEnabled="true"
app:errorTextAppearance="@style/error"
>
<android.support.design.widget.TextInputEditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/hint_email"/>
</android.support.design.widget.TextInputLayout>
答案 1 :(得分:6)
为TextInputLayout提供有效的样式( 机器人:主题=&#34; @风格/ Theme.AppCompat&#34)
<android.support.design.widget.TextInputLayout
android:id="@+id/testingInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/Theme.AppCompat">
<EditText
android:id="@+id/testingEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/testText"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
您需要添加appCompat&amp;支持设计依赖(如果没有)
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
在您的清单文件中添加AppCompat主题,
<application
...
android:theme="@style/Theme.AppCompat">
答案 2 :(得分:1)
textinputlayout的Sytle主题:
<style name="HintInputTextAppearance" parent="TextAppearance.AppCompat">
<item name="android:textColor">@color/input_floating_color</item>
<item name="android:textSize">22dp</item>
<item name="colorAccent">@color/input_floating_color</item>
</style>
<style name="InputTextAppearance" parent="TextAppearance.AppCompat">
<item name="android:textColor">#ff000000</item>
<item name="android:textColorHint">#ff000000</item>
<item name="android:textSize">24dp</item>
<item name="colorAccent">#ff000000</item>
</style>
<style name="ErrorTextAppearance" parent="TextAppearance.AppCompat">
<item name="android:textColor">#ffff0000</item>
<item name="android:textColorHint">#ffff0000</item>
<item name="android:textSize">18sp</item>
<item name="colorAccent">#ffff0000</item>
</style>
在布局中使用:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:id="@+id/name_signup"
app:errorEnabled="true"
app:errorTextAppearance="@style/ErrorTextAppearance"
app:hintTextAppearance="@style/HintInputTextAppearance"
android:layout_marginLeft="@dimen/left_margin_login"
android:layout_marginRight="@dimen/right_margin_login"
android:layout_height="match_parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:textAppearance="@style/InputTextAppearance"
android:layout_height="wrap_content"
android:hint="Name" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:id="@+id/email_signup"
app:errorEnabled="true"
app:errorTextAppearance="@style/ErrorTextAppearance"
app:hintTextAppearance="@style/HintInputTextAppearance"
android:layout_marginLeft="@dimen/left_margin_login"
android:layout_marginRight="@dimen/right_margin_login"
android:layout_height="match_parent">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:textAppearance="@style/InputTextAppearance"
android:layout_height="wrap_content"
android:hint="Email" />
</android.support.design.widget.TextInputLayout>
答案 3 :(得分:0)
@Sevastyan的解决方案非常适合使用xml布局。
但是,如果我有一个我以编程方式创建的TextInputLayout和TextInputEditText,我这样做了:
tilCode.setErrorEnabled(true);
tilCode.setErrorTextAppearance(R.style.error);
我会收到错误。但只是:
tilCode.setErrorTextAppearance(R.style.error);
适合我。
答案 4 :(得分:0)
使用它永远不需要Theme.AppCompat
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tv_metadata_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/tv_metadata_Details"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
答案 5 :(得分:-2)
使用TextUtils
if(TextUtils.isEmpty(etFirstName.getText().toString()))
{
etFirstName.setError("Filed is mandatory!");
view = etFirstName;
}
答案 6 :(得分:-3)
尝试使用以下代码在TextInputLayout
中显示错误:
tvFirstName.setErrorEnabled(true);
tvFirstName.setError("Please Enter firstName");