Theme.Material...
和 Theme.MaterialComponents...
有什么区别?
我正在创建一个警告对话框,当我创建它时使用:
new AlertDialog.Builder(context, android.R.style.Theme_Material_Light_Dialog_Alert);
我在按钮上看到了“colorAccent”彩色文本。
但是,当我使用以下方法创建对话框时:
return new AlertDialog.Builder(context, R.style.myTheme);
与:
<style name="myTheme" parent="@style/Theme.MaterialComponents.Light.Dialog.Alert"/>
我似乎收到紫色文本。这些有什么区别?
最后,如果我要从 Theme.AppCompat...
(而不是 Theme.MaterialComponent...
)导出“myTheme”,我会得到白色文本。这是怎么回事?
答案 0 :(得分:1)
Theme.Material
由 Android 从 API 21 开始提供。
Theme.MaterialComponents
由 Material Components 库提供。
它们完全不同。
如果您想使用材料组件库,最好的方法是使用 MaterialAlertDialogBuilder
。
return new MaterialAlertDialogBuilder(context, R.style.myTheme);
并从以下继承主题覆盖:
<style name="myTheme" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
您可以在此处查看应用于主题的所有 default attributes。