開發中用到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>
