Material3主题下CheckBox未自动转为MaterialCheckBox的原因咨询
以下是针对该问题的常见原因及解决办法:
Activity未继承Material兼容基类
MaterialComponentsViewInflater仅在AppCompatActivity或MaterialActivity的上下文环境中生效。如果你的Activity继承的是原生Activity类,系统不会自动替换控件。将Activity改为继承AppCompatActivity即可解决。Material组件库版本过低
确保项目引入的Material库版本支持Material3的自动替换逻辑。在Module级别的build.gradle中更新到最新稳定版:implementation 'com.google.android.material:material:1.11.0'旧版本可能存在主题与 inflater 不兼容的问题。
布局中CheckBox单独设置了非Material3主题
若<CheckBox>标签手动设置了android:theme属性,且该主题未继承Theme.Material3.*,会覆盖全局主题导致替换失效。检查布局代码,移除该属性或确保子主题也继承Material3主题。View Binding缓存问题
View Binding的生成文件可能存在缓存,即使控件已被正确替换,生成的代码仍显示为原生CheckBox。执行Build > Clean Project后再Rebuild Project,清除缓存后重新编译即可。Activity未正确关联Material3主题
检查AndroidManifest.xml中目标Activity的android:theme属性是否指向正确的Material3主题。例如:<activity android:name=".YourTargetActivity" android:theme="@style/Theme.YourAppMaterial3Theme">确认该主题的父主题是
Theme.Material3.*系列(如Theme.Material3.Dark)。
内容的提问来源于stack exchange,提问作者Maarten

