改变TextInputLayout聚焦&以编程方式提供未聚焦的提示颜色

时间:2017-07-31 05:48:31

标签: android android-layout android-edittext android-textinputlayout

我希望在处于聚焦或未聚焦状态时改变TEXT INPUT LAYOUT中提示的颜色。我有两个TEXT INPUT LAYOUT字段。两个字段是相同的颜色。但它处于聚焦状态颜色出现但是未聚焦表示默认的灰色颜色出现。我希望在聚焦和未聚焦状态下保持提示的颜色相同。

   <com.example.viveka.snipeid.CustomTextInputLayout
        android:id="@+id/input_layout_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        app:errorEnabled="true"
        >
    <EditText
        android:id="@+id/editEmail"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:hint="email / snipe id"
        android:digits="abcdefghijklmnopqrstuvwxyz.@0123456789"
        android:textAllCaps="false"
        android:textSize="12sp"
        android:layout_marginLeft="-4dp"
        android:textColor="@color/lightgray"
        android:textColorHint="@color/primary"/>
    </com.example.viveka.snipeid.CustomTextInputLayout>

预期图片enter image description here 我得到了什么enter image description here

我需要将两个字段更改为相同的颜色..

3 个答案:

答案 0 :(得分:0)

你可以这样做。

android:textColorHint="#FF0000"是EditText的提示颜色。

如果您想要文字颜色以及提示颜色。

您可以在android:textColor="#FF0000"中更改EditText

您可以添加app:errorTextAppearance="@style/text_in_layout_error_hint_Style"来更改错误文字颜色。

<com.example.viveka.snipeid.CustomTextInputLayout
    android:id="@+id/input_layout_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:textColorHint="#FF0000"
    app:errorTextAppearance="@style/text_in_layout_error_hint_Style"
    app:hintTextAppearance="@style/text_in_layout_hint_Style"
    app:errorEnabled="true">

    <EditText
        android:id="@+id/editEmail"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginLeft="-4dp"
        android:digits="abcdefghijklmnopqrstuvwxyz.@0123456789"
        android:hint="email / snipe id"
        android:textAllCaps="false"
        android:textColor="#FF0000"
        android:textColorHint="@color/primary"
        android:textSize="12sp"/>
</com.example.viveka.snipeid.CustomTextInputLayout>

LEFT-TOP提示颜色取决于app:hintTextAppearance="@style/text_in_layout_hint_Style"

样式代码:

<style name="text_in_layout_hint_Style">
    <item name="android:textColor">#FF0000</item>
    <item name="android:textSize">12sp</item>
</style>

添加错误文字样式

 <style name="text_in_layout_error_hint_Style">
    <item name="android:textColor">#00ff00</item>
    <item name="android:textSize">12sp</item>
</style>
像这样: enter image description here 希望能帮到你。

答案 1 :(得分:0)

例如创建一个选择器_text_input_layout_hint_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorWhenFocus" android:state_focused="true"/>
    <item android:color="@color/colorWhenNotFocus" android:state_focused="false"/>
</selector>

在文本输入布局中设置下一个属性:

android:textColorHint="@color/selector_text_input_layout_hint_color"

感谢:https://medium.com/@fast3r/this-is-brilliant-martin-thank-you-very-much-6c4a43a65df4

仅此而已。它对我有用;)

答案 2 :(得分:0)

在新材质主题中,当未聚焦时,提示颜色是 colorOnSurface 属性的着色版本。

聚焦时是 colorPrimary