我正在尝试在我的应用程序中创建一个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获得焦点时,标签会将颜色更改为THEME中的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>
有同样的问题。问题出在com.google.android.material:material:1.1.0-alphaXX上。问题已恢复为com.google.android.material:material:1.0.0。
附注:当使用com.google.android.material:material:1.1.0-alpha08时,我甚至无法对包含TextInputLayout的布局进行充气。 1.1.0似乎充满了问题。