You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Material Button实现报错求助

MaterialButton 加载崩溃问题求助

我在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:25:32