如何更改TextInputEditText的底部线条颜色和提示文字颜色?

4
我正在使用TextInputLayout和TetInputEditText来获取浮动提示。现在我想更改提示文本和编辑框底部线条的颜色。当用户单击编辑框时,我希望它能够得到更改。
因此,我尝试在EditText的onClickListener中更改其颜色。但是,我没有发现任何颜色的变化。
XML布局如下:
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:orientation="vertical">


    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_item_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_marginTop="20dp"
            android:paddingTop="05dp">
        <android.support.design.widget.TextInputEditText
            android:layout_width="240dp"
            android:layout_height="45dp"
            android:id="@+id/editTextItemName"
            android:layout_gravity="center_horizontal"
            android:hint="@string/item_name"
            android:textSize="12sp" />
        </android.support.design.widget.TextInputLayout>
    </LinearLayout>

Java代码:

      public void setUpUI(){

        edt_Item_Name = (TextInputEditText) findViewById(R.id.editTextItemName);
        edt_Item_quantity = (TextInputEditText)findViewById(R.id.editTextItemQuantity);
        edt_Item_Unit = (TextInputEditText)findViewById(R.id.editTextItemUnit);

        textInput_Item_name = (TextInputLayout)findViewById(R.id.input_layout_item_name);
        textInput_Item_quantity = (TextInputLayout)findViewById(R.id.input_layout_item_quantity);
        textInput_Item_Unit = (TextInputLayout)findViewById(R.id.input_layout_item_unit);

        edt_Item_Name.getBackground().mutate().setColorFilter(ContextCompat.getColor(this, R.color.edtColor), PorterDuff.Mode.SRC_ATOP);

        edt_Item_Name.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                edt_Item_Name.setHintTextColor(ContextCompat.getColor(SearchActivity.this, R.color.edtColor));
                edt_Item_Name.getBackground().mutate().setColorFilter(ContextCompat.getColor(SearchActivity.this, R.color.edtColor), PorterDuff.Mode.SRC_ATOP);
            }
        });
    }

}

输出:在此输入图片描述

我该如何实现这个?


这是你的应用程序的主题颜色,只需在styles.xml文件中进行更改即可。 - Nithin
更改强调颜色 - Surya Prakash Kushawah
这个默认应用了colorAccent吗?@Nithin - Sid
请查看此链接:https://dev59.com/Ul0a5IYBdhLWcg3wPWpN - Vishwajit Palankar
colorAccent 将默认应用 @Sid - Nithin
3个回答

3

colors.xml 文件中定义颜色

<color name="colorControlNormal">#c5c5c5</color>
<color name="colorControlActivated">@color/accent</color>
<color name="colorControlHighlight">@color/accent</color>

并在 styles.xml 中创建样式。

<style name="TextAppearence.App.TextInputLayout"  parent="@android:style/TextAppearance">
     <item name="android:textColor">@color/main_color</item>
</style>

并应用于你的TextInputLayout

 app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
 android:textColorHint="#0072BA"

将您的代码更改为以下内容:
 <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_item_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_marginTop="20dp"
            android:paddingTop="05dp"
            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
            android:textColorHint="#0072BA">
        <android.support.design.widget.TextInputEditText
            android:layout_width="240dp"
            android:layout_height="45dp"
            android:id="@+id/editTextItemName"
            android:layout_gravity="center_horizontal"
            android:hint="@string/item_name"
            android:textSize="12sp" />
        </android.support.design.widget.TextInputLayout>
    </LinearLayout>

0

要更改提示颜色,请使用:

android:textColorHint="@color/blue"

在您的TextInputLayout中,例如:

    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="@color/blue"
        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Text"/>
    </com.google.android.material.textfield.TextInputLayout>
      


-2

styles.xml 中创建样式

<style name="ThemeOverlay.AppTheme.TextInputEditText.Outlined" parent="">
    <item name="colorControlActivated">@color/your_color</item>
</style>

添加到XML中
 <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/email_layout"
        android:hint="Enter Your Email*"
        app:hintTextAppearance="@style/MyHintStyle"
        android:textColorHint="#6a6a6a"
        android:theme="@style/ThemeOverlay.AppTheme.TextInputEditText.Outlined"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接