最初我将文本提示颜色设置为灰色...如果验证失败,则将提示颜色更改为红色...但如果我移动到另一个编辑文本(无论何时失去焦点)..颜色显示默认值...
下面是我在布局中使用的代码
<android.support.design.widget.TextInputLayout
android:id="@+id/tip_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/img_email"
android:hint="@string/email"
app:hintTextAppearance="@style/EditTextHint">
<EditText
android:id="@+id/et_email"
style="@style/EditTextWithBlackMediumSizeWithoutLeftAndTopPadding10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:inputType="textEmailAddress"
android:textColorHint="@color/label_input_color" />
</android.support.design.widget.TextInputLayout>
用于修改颜色的样式
<style name="EditTextHint" parent="MyMaterialTheme">
<item name="android:textColor">@color/label_input_color</item>
<item name="android:textSize">@dimen/font_mini</item>
<item name="android:textAllCaps">@bool/fletTextcaps</item>
</style>
<style name="EditTextHintError" parent="MyMaterialTheme">
<item name="android:textColor">@color/tab_selected_text_color</item>
<item name="android:textSize">@dimen/font_mini</item>
<item name="android:textAllCaps">@bool/fletTextcaps</item>
</style>
我用来改变颜色的Java代码是
tip_email.setHintTextAppearance(R.style.EditTextHintError);
提示_电子邮件.设置提示文本外观(R.样式.编辑文本提示错误);
随附截图
Starting ScreenEmail validation failed and color changed to red
我需要的颜色是相同的,即使重点已经改变。。请建议对这个...。
3条答案
按热度按时间gtlvzcf81#
这似乎是
TextInputLayout
类中的一个bug。当您通过调用setHintTextAppearance
更新HintTextAppearance时,它只更改mFocusedTextColor
,而不更改mDefaultTextColor
。您可以检查源代码:TextInputLayout source
同时改变颜色的反射解决方案:
6ovsh4lw2#
你可以简单地通过使用材质TextInputLayout并添加textColorHint、hintTextColor属性来实现,这样做效果很好
qvtsj1bj3#
您只需通过编程方式将TextInputLayout上的
defaultHintTextColor
设置为所需的颜色