TextInputLayout低版本bug :“android.view.InflateException: Binary XML file line #6 : Error inflating class Textview”

  开发中用到TextInputLayout配合TextInputEdittext做输入框,在android7.0 android8.0手机上运行正常,在异步android5.0.2的手机上,点击输入框就报错:“android.view.InflateException: Binary XML file line #6 : Error inflating class Textview”。而实际上报错的xml并非是当前页面的布局文件,因为布局里面textview根本就没有设置其他属性,经过各种排查,最后发现问题出现在给TextInputLayout设置主题属性的时候,通常我们会通过此方法更改提示文字的样式和下划线的样式

   android:theme="@style/txt_lab"

txt_lab为我用到的样式,最开始是这个样子的

    <style name="txt_lab" parent="TextAppearance.AppCompat">
        <!--&lt;!&ndash; 默认状态提示颜色和字体&ndash;&gt;-->
        <item name="android:textColorHint">@color/white</item>
        <item name="android:textSize">15sp</item>
         <!--下面可以根据需要设置,如果没有将默认使用默认theme的颜色-->
         <!--Label标签的颜色-->
        <item name="colorAccent">@color/white</item>
        <!-- 默认状态状态设置底线颜色 -->
        <item name="colorControlNormal">@color/white</item>
        <!-- 选择的底线颜色 -->
        <item name="colorControlActivated">@color/white</item>
        <item name="passwordToggleTint">@color/snow</item>
        <item name="colorControlHighlight">@color/snow</item>
    </style>

注意他的parent我设置的是TextAppearance,就会出现文中提到的bug

修改成下面的Theme.Appcompat就行了

    <style name="txt_lab" parent="Theme.AppCompat.Light.NoActionBar">
        <!--&lt;!&ndash; 默认状态提示颜色和字体&ndash;&gt;-->
        <item name="android:textColorHint">@color/white</item>
        <item name="android:textSize">15sp</item>
         <!--下面可以根据需要设置,如果没有将默认使用默认theme的颜色-->
         <!--Label标签的颜色-->
        <item name="colorAccent">@color/white</item>
        <!-- 默认状态状态设置底线颜色 -->
        <item name="colorControlNormal">@color/white</item>
        <!-- 选择的底线颜色 -->
        <item name="colorControlActivated">@color/white</item>
        <item name="passwordToggleTint">@color/snow</item>
        <item name="colorControlHighlight">@color/snow</item>
    </style>

原文地址:https://www.cnblogs.com/yjpjy/p/11022049.html