Android 如果禁用EditText inside,如何更改TextInputLayout的浮动提示颜色

Android 如果禁用EditText inside,如何更改TextInputLayout的浮动提示颜色,android,android-edittext,android-textinputlayout,Android,Android Edittext,Android Textinputlayout,我正在将EditText与TextInputLayout一起使用。如果EditText被禁用,我只想更改TextInputLayout的浮动提示颜色。我用选择器试过,它不起作用 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" android:textColor="@color/darkGray" />

我正在将
EditText
TextInputLayout
一起使用。如果EditText被禁用,我只想更改
TextInputLayout
的浮动提示颜色。我用选择器试过,它不起作用

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:textColor="@color/darkGray" />
    <item android:state_pressed="false" android:state_focused="false" android:textColor="@color/lightGray"/>
</selector>

TextInputLayout
类中有一个名为
setHintTextAppearance(int-styleId)
的方法。您可以使用此方法根据启用/禁用状态设置提示文本的不同颜色

例如:

//for disabled editText
mEditText.setEnabled(false);
mTextInoutLayout.setHintTextAppearance(R.style.CustomHintDisabled);

//for enablededitText
mEditText.setEnabled(true);
mTextInoutLayout.setHintTextAppearance(R.style.CustomHintEnabled);
在您的
styles.xml中

<style name="CustomHintDisabled" parent="YourBaseTheme.TextAppearance">
    <item name="textColor">@color/gray</item>
</style>

<style name="CustomHintEnabled" parent="YourBaseTheme.TextAppearance">
    <item name="textColor">@color/black</item>
</style>

@颜色/灰色
@颜色/黑色

您必须在应用程序主题中定义android:textColorHint:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>

    <item name="android:textColorHint">@color/secondary_text</item>
</style>

@颜色/原色
@颜色/原色/深色
@颜色/口音
@颜色/辅助文本

希望这对您有用。

如果您想用相同的颜色更改每个
文本输入布局的提示,您可以使用下面的代码从
样式更改它

  <style name="income" parent="TextAppearance.AppCompat">
        <item name="android:textColor">@color/green</item>
        <item name="android:textColorHint">@color/green</item>
        <item name="colorAccent">@color/green</item>
        <item name="colorControlNormal">@color/green</item>
        <item name="colorControlActivated">@color/green</item>
        <item name="colorControlHighlight">@color/green</item>
        <item name="android:textColorHighlight">@color/green</item>
    </style>

使用android:theme对棒棒糖和更高版本的应用非常重要。

执行以下步骤:-1。将此样式添加到styles.xml中

<style name="FloatingLabel" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/theme</item>
    <item name="android:textSize">12sp</item>
</style>

@颜色/主题
12便士
2.像下面那样使用它

<android.support.design.widget.TextInputLayout
                    android:id="@+id/loginPassLayout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_centerHorizontal="true"
                    android:layout_toRightOf="@+id/user"
                    android:textColorHint="@color/white"
                    foo:hintTextAppearance="@style/FloatingLabel">

                    <com.app.Widget.EditTextPlus
                        android:id="@+id/edt_email"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_centerVertical="true"
                        android:layout_marginLeft="5dp"
                        android:background="@android:color/transparent"
                        android:hint="Email"
                        android:inputType="textEmailAddress"
                        android:maxLength="30"
                        android:maxLines="1"
                        android:paddingLeft="10dp"
                        android:text=""
                        android:textColor="@color/white"
                        android:textColorHint="@color/white"
                        android:textSize="15sp"/>
                </android.support.design.widget.TextInputLayout>

您可以在
文本输入布局中设置主题

<android.support.design.widget.TextInputLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:theme="@style/TextLabel">

     <EditText
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:hint="First Name"
         />

 </android.support.design.widget.TextInputLayout>

<style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/colorHint</item> 
    <item name="android:textSize">16sp</item>

    <item name="colorAccent">@color/colorAccent</item>
    <item name="colorControlNormal">@color/colorNormal</item>
    <item name="colorControlActivated">@color/colorActivated</item>
 </style>

希望它能对您有所帮助。

在您的
android.support.design.widget.TextInputLayout
中尝试app:hintTextAppearance。通过定义
app:hintTextAppearance
的样式,您还可以简单地设置浮动标签的颜色。 在styles.xml中:

<style name="CustomTextAppearance" parent="@android:style/TextAppearance">
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/colorAccent</item>

16便士
@颜色/颜色重音

在您的TextInputLayout中:

<android.support.design.widget.TextInputLayout
android:id="@+id/lyt_goal"
style="@style/CustomTextInput"
app:hintTextAppearance="@style/CustomTextAppearance">

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/edt_goal"
    style="@style/CustomEditText"
    android:hint="@string/str_goal" />


希望这会对您有所帮助。

如果您使用的是我发现很有用的编辑文本,您是否也尝试过这一点!R.style.CustomHintEnabled而不是R.styles.CustomHintEnabled
<style name="CustomTextAppearance" parent="@android:style/TextAppearance">
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/colorAccent</item>
<android.support.design.widget.TextInputLayout
android:id="@+id/lyt_goal"
style="@style/CustomTextInput"
app:hintTextAppearance="@style/CustomTextAppearance">

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/edt_goal"
    style="@style/CustomEditText"
    android:hint="@string/str_goal" />