android - 如何设置TextInputLayout的下划线颜色
问题描述
我在 Android 9.0 上使用com.google.android.material:material:1.1.0 。我想在 TextInputLayout 没有聚焦但没有任何效果时设置它的下划线颜色。
我的风格:
<style name="EditTextTheme" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
<item name="colorAccent">#00BFFF</item>
<item name="colorControlNormal">#FFFF00</item>
<item name="colorControlActivated">#FF00FF</item>
<item name="colorControlHighlight">#FFFF00</item>
<item name="boxStrokeColor">@color/text_input_box_stroke</item>
</style>
我的选择器(text_input_box_stroke):
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#00BFFF" android:state_focused="true"/>
<item android:color="#FFFF00" android:state_hovered="true"/>
<item android:color="#00FF00" android:state_enabled="false"/>
</selector>
还有我的 TextInputLayout:
<com.google.android.material.textfield.TextInputLayout
style="@style/EditTextTheme"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:hint="Email">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textWebEmailAddress" />
</com.google.android.material.textfield.TextInputLayout>
解决方案
右键单击res
-> new
-> Android Resource Directory
-> Resource type
->color
为您的文件命名例如text_input_box_stroke.xml
并将其放入颜色文件夹
text_input_box_stroke.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="true"
android:color="#00BFFF" />
<item
android:state_pressed="true"
android:color="#FFFF00" />
<item
android:state_focused="true"
android:color="#00C853" />
<item
android:color="#ff00ff" />
</selector>
为了防止TextInputLayout
视图在包含它的活动或片段开始时获得焦点,将此属性放到包含它的父布局中TextInputLayout
android:fadeScrollbars="false"
android:fillViewport="true"
布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/content">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/layout_data"
style="@style/TextInputLayoutStyleFilledBox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Hint"
android:textColorHint="@color/black"
app:boxBackgroundColor="@android:color/transparent"
app:boxStrokeWidth="2dp"
app:hintTextColor="@color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/input_value"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="123456789" />
</com.google.android.material.textfield.TextInputLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
样式.xml
<style name="TextInputLayoutStyleFilledBox"
parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
<item name="colorAccent">#00BFFF</item>
<item name="colorControlNormal">#FFFF00</item>
<item name="colorControlActivated">#FF00FF</item>
<item name="colorControlHighlight">#FFFF00</item>
<item name="boxStrokeColor">@color/text_input_box_stroke</item>
</style>
推荐阅读
- laravel - 检查用户订阅到期 Stripe
- javascript - 赛普拉斯找不到规格文件
- sql - SQL雪花列条件检查
- vba - 在图片内容控件中添加/删除图片时在 Word 中运行宏
- html - 文本未以最小高度图像为中心
- azure-data-factory - 通过 REST API 触发 ADF 管道并传递参数
- angular - Nrwl Nx:将库合并到可发布的库中
- excel - 删除多余空格的最快方法 - 在 VBA excel 中
- java - JMH - List#addAll 比 ArrayList#new 快吗?
- azure-pipelines - 如何在 Azure Pipelines 中将图像推送到 Docker Hub