1. 程式人生 > 其它 >Android開發The style on this component requires your app theme to be Theme.AppCompat (or a descendant)的解決方法

Android開發The style on this component requires your app theme to be Theme.AppCompat (or a descendant)的解決方法

問題:

Caused by: android.view.InflateException: Binary XML file line #100 in xxx_layout: Binary XML file line #100 in xxx_layout: Error inflating class com.google.android.material.XXX
Caused by: android.view.InflateException: Binary XML file line #100 in xxx_layout: Error inflating class com.google.android.material.XXX
Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        ...
Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).

原因:

xml佈局中使用了Material控制元件,所以要求Application或者該Activity的android:theme樣式必須是Theme.AppCompa或者其子樣式。
那麼問題來了?就必須將android:theme樣式改為Theme.AppCompa或者其子樣式嗎?怎麼區分是不是Theme.AppCompa樣式呢?
其實使用了Material控制元件,只需要Theme.AppCompa或者其子樣式包含colorPrimary、colorPrimaryDark、colorAccent這三個名稱的顏色即可。

解決方法

<style name="MyTheme" parent="@android:style/Theme.Material.Light.NoActionBar">
	...
	<!--新增下面三個名稱的顏色(顏色值隨便),MyTheme這個樣式滿足Theme.AppCompa,就可以解決上面問題-->
	<item name="colorPrimary">#ffff00</item>
	<item name="colorPrimaryDark">#ff00ff</item>
	<item name="colorAccent">#ff0000</item>
</style>