如果内部的 EditText 被禁用,如何更改 TextInputLayout 的浮动提示颜色
How to change the floating hint color of TextInputLayout if EditText inside is disabled
我正在使用 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
class 中有一种方法叫做 setHintTextAppearance(int styleId)
。您可以使用此方法根据 enabled/disabled 状态设置不同的颜色来提示文本。
示例:
//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>
希望这对你有用。
如果你想用相同的颜色改变每个 TextInputLayout
的提示,你可以用下面的代码从 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>
这里我只用了一个代码 TextInputLayout
并且它改变了它的提示颜色,文本颜色,选中时和未选中时的文本输入布局颜色。
<android.support.design.widget.TextInputLayout
android:id="@+id/input_income"
style="@style/income"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/input_days"
android:layout_margin="10dp"
android:hint="Enter Monthly Take Home Income"
android:textColorHint="#18c418"
android:theme="@style/income"
app:hintAnimationEnabled="true">
</android.support.design.widget.TextInputLayout>
使用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>
2.Use 就像下面这样
<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>
您可以在 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>
对于其他 EditTextlayout
它将从应用程序主题中定义的 colorAccent 中选择颜色。
<item name="colorAccent">@color/colorAccent</item>
希望对您有所帮助。
在你的 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>
并在您的 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" />
希望对您有所帮助。
我正在使用 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
class 中有一种方法叫做 setHintTextAppearance(int styleId)
。您可以使用此方法根据 enabled/disabled 状态设置不同的颜色来提示文本。
示例:
//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>
希望这对你有用。
如果你想用相同的颜色改变每个 TextInputLayout
的提示,你可以用下面的代码从 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>
这里我只用了一个代码 TextInputLayout
并且它改变了它的提示颜色,文本颜色,选中时和未选中时的文本输入布局颜色。
<android.support.design.widget.TextInputLayout
android:id="@+id/input_income"
style="@style/income"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/input_days"
android:layout_margin="10dp"
android:hint="Enter Monthly Take Home Income"
android:textColorHint="#18c418"
android:theme="@style/income"
app:hintAnimationEnabled="true">
</android.support.design.widget.TextInputLayout>
使用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>
2.Use 就像下面这样
<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>
您可以在 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>
对于其他 EditTextlayout
它将从应用程序主题中定义的 colorAccent 中选择颜色。
<item name="colorAccent">@color/colorAccent</item>
希望对您有所帮助。
在你的 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>
并在您的 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" />
希望对您有所帮助。