Android Studio中Material Button实现报错求助
我在Android Studio中使用Material Button时遇到崩溃问题,报错信息如下。试过Stack Overflow上的多种方案都没解决,求帮忙!
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.app.lifeadvicequotes, PID: 8603 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.lifeadvicequotes/com.app.lifeadvicequotes.MainActivity}: android.view.InflateException: Binary XML file line #73 in com.app.lifeadvicequotes:layout/activity_main: Binary XML file line #73 in com.app.lifeadvicequotes:layout/activity_main: Error inflating class com.google.android.material.button.MaterialButton at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4111) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4277) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8751) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: android.view.InflateException: Binary XML file line #73 in com.app.lifeadvicequotes:layout/activity_main: Binary XML file line #73 in com.app.lifeadvicequotes:layout/activity_main: Error inflating class com.google.android.material.button.MaterialButton Caused by: android.view.InflateException: Binary XML file line #73 in com.app.lifeadvicequotes:layout/activity_main: Error inflating class com.google.android.material.button.MaterialButton
我的style.xml代码如下:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:textColorPrimary">@color/text_color_primary</item> </style> <!-- Base application theme. --> <style name="AppTheme1" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme.Button" parent="android:Widget.Material.Button"> <item name="colorButtonNormal">#FFFFFF</item> <item name="android:textColor">#000000</item> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> <style name="NavigationDrawerStyle"> <item name="android:textSize">16sp</item> </style> </resources>
问题原因及解决办法
主题不兼容
MaterialButton必须依赖Material Components主题,当前使用的Theme.AppCompat系列主题无法适配。
解决:将应用主题父类替换为Material Components主题,修改后的主题代码:<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:textColorPrimary">@color/text_color_primary</item> </style> <style name="AppTheme1" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>按钮样式父类错误
自定义按钮样式的父类是原生android:Widget.Material.Button,与Material Components库的按钮不匹配。
解决:替换为Material Components的按钮样式,并更新属性(colorButtonNormal替换为backgroundTint):<style name="AppTheme.Button" parent="Widget.MaterialComponents.Button"> <item name="backgroundTint">#FFFFFF</item> <item name="android:textColor">#000000</item> </style>检查依赖配置
确保Module级别的build.gradle中已添加Material Components库依赖:implementation 'com.google.android.material:material:1.11.0' // 使用最新稳定版本
内容的提问来源于stack exchange,提问作者Jaffer Alfahdawi
相关产品推荐
相关产品推荐

