将 TextInputLayout 浮动提示颜色设置为轮廓颜色
Set TextInputLayout floating hint color as Outline color
我正在使用 MaterialComponents Outline TextInputLayout。我需要在提示文本上设置不同的颜色:
- “主要”提示(当 TextInput 中没有文本时)--> 黑色 60% alpha
- 浮动提示 --> 与轮廓颜色相同(即非活动时为 colorPrimary,活动时为 colorAccent)
我正在使用 android:textColorHint 设置主提示颜色,使用 app:hintTextColor 设置浮动提示颜色。 las,最后一个属性似乎仅在 TextInputLayout 处于活动状态时才起作用。如果它处于非活动状态,则浮动提示采用 android:textColorHint 颜色。
我目前的配置
layout.xml
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/td_descriptionH_editText"
style="@style/Widget.App.TextInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/td_description">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/td_description_editText"
style="@style/Widget.App.TextInput"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
styles.xml
<style name="Widget.App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="android:textColorHint">@color/black_inactive</item>
<item name="hintTextColor">?attr/drawableEditTextOutline</item>
<item name="boxStrokeColor">?attr/drawableEditTextOutline</item>
</style>
drawableEditTextOutline.xml
<selector>
<item android:color="@color/colorPrimary" android:state_focused="true"/>
<item android:color="@color/colorAccent"/>
</selector>
TextInputLayout 活动正常(浮动提示与轮廓颜色相同)
没有文本的 TextInputLayout 不活动是可以的
TextInputLayout 与文本处于非活动状态是 KO --> 浮动提示与轮廓颜色不同
我怎样才能做到这一点?
TextInputLayout 必须包含 textColorHint 属性以获得所需的结果
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/txt_email"
android:padding="5dp"
android:textColorHint="@color/white"
app:hintTextColor="@color/white">
您可以使用类似的东西:
<style name="CustomOutlineBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="boxStrokeColor">@color/text_input_layout_stroke_color</item>
<item name="android:textColorHint">@color/text_color_hint</item>
<item name="hintTextColor">@color/green</item>
</style>
使用 @color/text_color_hint
选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
<item android:alpha="..." android:color="@color/blue"/>
</selector>
和 @color/text_input_layout_stroke_color selector
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="..." android:color="@color/green" android:state_focused="true"/>
<item android:alpha="..." android:color="@color/green" android:state_hovered="true"/>
<item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
<item android:alpha="..." android:color="@color/blue"/> <!-- unfocused -->
</selector>
我正在使用 MaterialComponents Outline TextInputLayout。我需要在提示文本上设置不同的颜色:
- “主要”提示(当 TextInput 中没有文本时)--> 黑色 60% alpha
- 浮动提示 --> 与轮廓颜色相同(即非活动时为 colorPrimary,活动时为 colorAccent)
我正在使用 android:textColorHint 设置主提示颜色,使用 app:hintTextColor 设置浮动提示颜色。 las,最后一个属性似乎仅在 TextInputLayout 处于活动状态时才起作用。如果它处于非活动状态,则浮动提示采用 android:textColorHint 颜色。
我目前的配置
layout.xml
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/td_descriptionH_editText"
style="@style/Widget.App.TextInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/td_description">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/td_description_editText"
style="@style/Widget.App.TextInput"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
styles.xml
<style name="Widget.App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="android:textColorHint">@color/black_inactive</item>
<item name="hintTextColor">?attr/drawableEditTextOutline</item>
<item name="boxStrokeColor">?attr/drawableEditTextOutline</item>
</style>
drawableEditTextOutline.xml
<selector>
<item android:color="@color/colorPrimary" android:state_focused="true"/>
<item android:color="@color/colorAccent"/>
</selector>
TextInputLayout 活动正常(浮动提示与轮廓颜色相同)
没有文本的 TextInputLayout 不活动是可以的
TextInputLayout 与文本处于非活动状态是 KO --> 浮动提示与轮廓颜色不同
我怎样才能做到这一点?
TextInputLayout 必须包含 textColorHint 属性以获得所需的结果
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/txt_email"
android:padding="5dp"
android:textColorHint="@color/white"
app:hintTextColor="@color/white">
您可以使用类似的东西:
<style name="CustomOutlineBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="boxStrokeColor">@color/text_input_layout_stroke_color</item>
<item name="android:textColorHint">@color/text_color_hint</item>
<item name="hintTextColor">@color/green</item>
</style>
使用 @color/text_color_hint
选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
<item android:alpha="..." android:color="@color/blue"/>
</selector>
和 @color/text_input_layout_stroke_color selector
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="..." android:color="@color/green" android:state_focused="true"/>
<item android:alpha="..." android:color="@color/green" android:state_hovered="true"/>
<item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
<item android:alpha="..." android:color="@color/blue"/> <!-- unfocused -->
</selector>