android - TextInputLayout 错误图标可绘制和错误图标色调未应用给定样式
问题描述
使用如下所示的样式时,我遇到了这个问题:
<style name="TextInputLayoutThemeWarning" parent="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="boxStrokeErrorColor">@color/warning_color</item>
<item name="errorTextColor">@color/warning_color</item>
<item name="errorIconTint">@color/warning_color</item>
<item name="errorIconDrawable">@drawable/ic_baseline_warning_24</item>
<item name="textAppearanceCaption">@style/TextAppearanceTextInputLayout</item>
</style>
当它们在活动中时,它适用于任何 TextInputLayout 但是,当我在片段中的 TextInputLayout 上使用相同的样式时,不会应用可绘制对象和色调。我尝试以编程方式和 XML 代码手动设置 Drawable 和 Tint,似乎这两个属性被忽略并设置为默认值,而不是我选择的那些。
活动的主题是:
<style name="Theme.Default" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textViewStyle">@style/CondensedFont</item>
</style>
下面是片段布局的一个片段(为清楚起见而减少):
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clCCS1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background">
<ScrollView
android:id="@+id/svCreateCharacter"
android:layout_width="0dp"
android:layout_height="0dp"
android:fillViewport="true"
android:scrollbarSize="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clInnerContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tilCharacterName"
style="@style/TextInputLayoutThemeWarning"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="8dp"
app:boxBackgroundColor="@color/content_background"
app:errorEnabled="true"
app:errorTextAppearance="@style/TextAppearanceTextInputLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvCharacterTitle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/tietCharacterName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:lines="1"
android:maxLines="1"
android:textSize="12sp"
android:translationZ="4dp" />
</com.google.android.material.textfield.TextInputLayout>
解决方案
我发现 Icon Tint 没有应用的原因不是因为样式没有应用,而是我不小心在我的 TextInputLayouts 中添加了一个翻译 z 值。'android:translationZ="4dp"' 会导致图标无法正常显示。
推荐阅读
- vue.js - 如何取消 vue.js 中文件的上传进度?
- c# - 当 XML 具有多个同名元素时,如何将其表示为类
- r - 在 ShinyApp 中使用下载处理程序下载数据时出现问题
- android - Firebase Api Key 可用于其他应用程序(反编译的 APK)
- c# - 在 C# 中创建一副纸牌
- sql - 如何在 datetime SQL 列中按日期和 8 小时间隔对这些日期进行分组和计数?
- regex - 替换给定 unicode 字符串中的所有表情符号
- sql - SQL旧数据卡住并导致错误
- javascript - 为什么 document.execCommand(''backColor'') 不适用于 css 变量,而 foreColor 可以?
- c# - Visual Studio 2017 UnitTest 未运行