android - TextInputLayout 的 colorControlActivated 不起作用
问题描述
这是我应用程序的主要风格
<style name="Theme.RoundRobin" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorSecondaryVariant</item>
<item name="colorAccent">@color/colorPrimaryVariant</item>
<item name="colorControlActivated">@color/colorControlActivated</item>
<item name="colorControlNormal">@color/colorControlNormal</item>
<item name="colorControlHighlight">@color/colorControlNormal</item>
<item name="android:textColorPrimary">@color/textColorPrimary</item>
<item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
</style>
据我所知,colorControlHighlight 应该为 textinputlayout 中的下划线、标签和光标着色。
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/username_til"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="24dp"
android:layout_marginRight="24dp"
app:hintTextAppearance="@style/TextAppearance.Subtitle1"
app:layout_constraintBottom_toTopOf="@+id/password_til"
app:layout_constraintEnd_toEndOf="parent"
android:hint="Username"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/usernameEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.Body2"/>
</com.google.android.material.textfield.TextInputLayout>
没有一个 colorControls 应该与新的 MaterialCompoents 一起使用。
我在这里错过了什么吗
我给了我的 TextInput 这种风格,但它看起来好像 MaterialComponents 不能很好地与 colorControlsX
<style name="Widget.RoundRobin.TextInputLayout.FilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
<item name="hintTextAppearance">@style/TextAppearance.Caption</item>
<item name="android:paddingBottom">8dp</item>
<item name="boxBackgroundColor">@color/colorWhite</item>
<item name="android:colorControlHighlight">@color/colorSecondaryVariant</item> // this doesn't work too
</style>
解决方案
只需使用类似的东西:
<com.google.android.material.textfield.TextInputLayout
style="@style/FilledBoxColor"
...>
使用自定义样式:
<style name="FilledBoxColor" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
<!-- underline color in FilledBox style, border color in OutlinedBox
<item name="boxStrokeColor">@color/text_input_layout_stroke_color</item>
<!-- The color of the label when it is collapsed and the text field is active -->
<item name="hintTextColor">@color/....</item>
<!-- The color of the label in all other text field states (such as resting and disabled) -->
<item name="android:textColorHint">@color/.....</item>
</style>
的默认选择器boxStrokeColor
是:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimary" android:state_focused="true"/>
<!-- 4% overlay over 42% colorOnSurface -->
<item android:alpha="0.46" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
<item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<item android:alpha="0.42" android:color="?attr/colorOnSurface"/>
</selector>
推荐阅读
- java - 使用 Spring WebClient 响应式读取行
- javascript - 如何在页面加载/提交时将复选框设置为默认 false?
- c - UCI C API - 如何通过只运行一个程序一次来设置多个选项
- powershell - 将参数数组传递给 powershell.exe
- database - 卡蒙达数据库。保存 id 而不是对象
- sql - ORA-01417 - 两个外部连接错误。新的连接语法?
- c# - 如何在winforms中打印列或行跨越的datagridview
- javascript - Angular 8 从其上下文之外访问数据并检测更改
- python - 如何通过 python 脚本修改网页浏览历史?
- python - 如何正确连接两个一维数组而不展平?