android - Androidx Material TextInput 颜色不会改变
问题描述
我正在尝试在我的应用程序中创建一个com.google.android.material.textfield.TextInputLayout
aka TextInputLayout
,并根据字段中文本的存在使提示文本更改其颜色。现在这个元素的代码如下所示:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/sign_up_email_text_input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/sign_up_email_hint"
app:errorEnabled="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.57"
app:layout_constraintWidth_percent="0.78"
android:textColorHighlight="#FF00FF"
android:textColorHint="#00FF00"
style="@style/TextInputLayout"
>
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/sign_up_email_edit_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textEmailAddress"
/>
</com.google.android.material.textfield.TextInputLayout>
我正在应用一种风格
<style name="TextInputLayout" parent="ThemeOverlay.MaterialComponents.TextInputEditText.OutlinedBox">
<item name="android:textColorHint">#FFFFFF</item>
<item name="android:textColor">#FFFF00</item>
<item name="colorAccent">#FF00FF</item>
<item name="colorControlNormal">#FF0000</item>
<item name="colorControlActivated">#00FF00</item>
<item name="colorControlHighlight">#0000FF</item>
</style>
但这种风格只适用于不活动的提示颜色,并且它对android:textColorHint
提示的两种状态应用相同的颜色 ( ) - 当它填充 textField 和跳转到一个角落时。当 TextInput 获得焦点时,标签将颜色更改为colorAccent
来自主题的颜色,而不是来自我应用的样式
我的问题是 - 如何仅使用 XML 使提示标签根据文本的存在(而不是 TextInput 是否聚焦)改变颜色?我以前(在支持库上)看到过人们这样做的例子,但我自己无法达到这样的结果。
解决方案
迁移到 AndroidX 时面临同样的问题。
更改父主题
<style name="TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
<item name="android:textColorHint">#FFFFFF</item>
<item name="android:textColor">#FFFF00</item>
<item name="colorAccent">#FF00FF</item>
<item name="colorControlNormal">#FF0000</item>
<item name="colorControlActivated">#00FF00</item>
<item name="colorControlHighlight">#0000FF</item>
</style>
推荐阅读
- vue.js - 当我单击提交按钮时,发票中的数据已插入,但未插入详细信息
- php - 使用 ajax (Woocommerce) 重新加载 PHP 条件
- python - 在 Python 中并行化 for 循环的独立迭代
- javascript - wix mobile 无法适应嵌入在移动版本上的 javascript
- python - 用 $ 字符在 python 中编写文本
- c# - 将 GameObject 转换为制作的对象列表并迭代
- filter - 如何在过滤器窗格中执行 OR 逻辑?
- typescript - Expo Location Error: 无权使用后台定位服务
- html - 我想在引导程序中将图像放在轮播顶部
- c++ - 无法在 Linux 上使用 Mingw 链接静态库