关于TextInputLayout 类的问题,在androidx 里面是不带这个类型的,需要导入依赖
implementation 'com.google.android.material:material:1.0.0'
使用:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/text_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextInputLayoutTheme"
app:hintTextAppearance="@style/TextInputLayoutTheme" //提示语的样式
app:errorTextAppearance="@style/TextInputLayouteErrMsg" //错误提示的样式
>
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberPassword"
android:imeOptions="actionDone"
android:lines="1"
android:singleLine="true"
android:hint="@string/please_enter_password"
/>
</com.google.android.material.textfield.TextInputLayout>
使用与TextInputEditText 结合,实现丝滑的用户体验,当Editext的获取焦点之后,hint自动会在上面提示,增强了用户的体验度。
但是这么炫酷的效果,那么头疼的是TextInputLayout 的hint文字,和底线颜色应该怎么修改呢?
请注意上面代码的红色部分,非常关键! 我们在修改TextInputLayout 的时候,一定要记得去修改Theme 而不是style.
当第一个TextInputLayout 的EditText 获取焦点时,文字和颜色使用的是Theme
android:theme="@style/TextInputLayoutTheme"
<style name="TextInputLayoutTheme" >
<item name="android:textColor">@color/colorPrimaryDark</item>
<!-- <item name="android:textSize">16sp</item>-->
<!-- 底部线 默认颜色 -->
<item name="colorControlNormal">@color/colorPrimaryDark</item>
<!-- 底部线 EditText激活时颜色 -->
<item name="colorControlActivated">@color/colorAccent</item>
</style>
当点击登陆的时候,对第一个输入框进行非空判断,则表现为
app:errorTextAppearance="@style/TextInputLayouteErrMsg"
扫描二维码关注公众号,回复:
17105339 查看本文章
因为我们在代码中的展现形式是 error,见下文
text_account.setError("账号不能为空");
至此,大家可以随意适配各种颜色了,再也不担心产品姐姐提bug了。。。。。