我正在尝试在TextInputEditText
中设置TextInputLayout
的下划线颜色。将colorControlActivated
设置为所需的颜色时,光标会更改颜色,但是下划线没有响应。
我尝试过:
colorControlHighlight
,colorControlNormal
和colorControlActivated
的样式创建。在布局文件和清单中同时设置小部件主题。这是在values / themes.xml中定义的样式:
<style name="AppTheme.DetailItem" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="android:colorControlNormal">#ff0000</item>
<item name="android:colorControlHighlight">#0000ff</item>
<item name="android:colorControlActivated">#ff00ff</item>
</style>
并且应用了主题:
<com.google.android.material.textfield.TextInputLayout
android:theme="@style/AppTheme.DetailItem"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:errorEnabled="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:enabled="false"
android:maxLines="1"
android:textAppearance="?textAppearanceBody2"
tools:text="Name" />
</com.google.android.material.textfield.TextInputLayout>
我希望TextInputEditText
的下划线在聚焦时变为colorControlActivated
,而在未聚焦时变为colorControlNormal
。但是,无论如何,下划线颜色在未聚焦时仍为黑色,而在聚焦时为colorPrimary
。但是,当焦点对准该字段时,光标的确会变为colorControlActivated
,因此小部件可以识别我定义的样式,但未使用样式颜色绘制下划线。
因为您使用的是FilledBox,所以下划线颜色由boxStrokeColor
属性定义。
这是默认选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimary" android:state_focused="true"/>
<item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
<item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
</selector>
您可以设置自定义选择器,也可以通过以下方式覆盖colorOnSurface
和colorPrimary
颜色:>
<com.google.android.material.textfield.TextInputLayout android:theme="@style/AppTheme.DetailItem" ...>
其中:
<style name="AppTheme.DetailItem">
<item name="colorOnSurface">@color/...</item>
<item name="colorPrimary">@color/....</item>
....
</style>