開發中用到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"> <!--<!– 默認狀態提示顏色和字體–>--> <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"> <!--<!– 默認狀態提示顏色和字體–>--> <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>