Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TextInputLayout错误图标可绘制和错误图标着色未应用给定样式_Android_Xml_Kotlin - Fatal编程技术网

Android TextInputLayout错误图标可绘制和错误图标着色未应用给定样式

Android TextInputLayout错误图标可绘制和错误图标着色未应用给定样式,android,xml,kotlin,Android,Xml,Kotlin,我在使用以下样式时遇到此问题: <style name="TextInputLayoutThemeWarning" parent="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"> <item name="boxStrokeErrorColor">@color/warning_color</item>

我在使用以下样式时遇到此问题:

<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>

@颜色/警告颜色
@颜色/警告颜色
@颜色/警告颜色
@可牵引/集成电路基线警告24
@样式/文本外观文本输入布局
它适用于在活动中的任何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>

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
@样式/压缩字体
下面是片段布局中的一个片段(为了清晰起见进行了缩减):


您遇到的问题可能会发生,因为片段可能没有设置正确的样式,正如我所读到的,您必须单独设置片段的主题,这可以使用片段中onCreateView函数中的以下代码来完成:

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    val contextThemeWrapper: Context = ContextThemeWrapper(activity, R.style.yourCustomTheme)
    // clone the inflater using the ContextThemeWrapper
    val localInflater = inflater.cloneInContext(contextThemeWrapper)
    return localInflater.inflate(R.layout.fragment, container, false)
}
但是,为了使其工作,您为片段设置的主题必须具有来自材质设计库的父主题。根据我的经验和研究,如果活动或片段的父主题不是来自材质设计库,则可能会出现问题,小部件将无法正常工作,应在样式文件中创建片段的自定义主题:

<style name="FragmentTheme"    parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

@颜色/原色
@颜色/原色暗
@颜色/颜色重音
以下是我进行研究的一些有用资源的链接:


我发现图标色调不适用的原因不是因为样式不适用,而是我在文本输入布局中意外添加了翻译z值。”android:translationZ=“4dp”'将导致图标无法正确显示。

活动使用的主题是什么?我已更新了原始问题。我用于活动的主题现在已在原始答案中。我尝试使用此选项,但仍然无法将ErrorIContent或errorDrawable更改为所需的主题。我已经更新了原始问题,如有任何帮助,将不胜感激。
<style name="FragmentTheme"    parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>