8 android material-design android-design-library
TextInputLayout工作正常,当试图设置Error它显示错误.
码:
if (etFirstName.getText().length() == 0) {
etFirstName.requestFocus();
tvFirstName.setError("Please enter firstname");
} else {
tvFirstName.setError(null);
tvFirstName.setErrorEnabled(false);
}
Run Code Online (Sandbox Code Playgroud)
检查日志:
java.lang.RuntimeException: Failed to resolve attribute at index 24
at android.content.res.TypedArray.getColor(TypedArray.java:401)
at android.widget.TextView.<init>(TextView.java:692)
at android.widget.TextView.<init>(TextView.java:629)
at android.widget.TextView.<init>(TextView.java:625)
at android.widget.TextView.<init>(TextView.java:621)
at android.support.design.widget.TextInputLayout.setErrorEnabled(TextInputLayout.java:297)
at android.support.design.widget.TextInputLayout.setError(TextInputLayout.java:344)
Run Code Online (Sandbox Code Playgroud)
Sev*_*yuk 11
虽然我没有完全理解为什么会出现这个问题,但是必须要对Android如何根据状态将颜色应用于Views做一些事情.
这是我解决问题的方法:
在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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
为TextInputLayout提供有效的样式(android:theme ="@ style/Theme.AppCompat")
<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>
Run Code Online (Sandbox Code Playgroud)
您需要添加appCompat和支持设计依赖项(如果没有)
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
Run Code Online (Sandbox Code Playgroud)
在您的清单文件中添加AppCompat主题,
<application
...
android:theme="@style/Theme.AppCompat">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14704 次 |
| 最近记录: |