“材料”与“材料组件”

时间:2021-02-10 01:37:57

标签: android android-alertdialog android-theme android-dialog material-components-android

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”,我会得到白色文本。这是怎么回事?

1 个答案:

答案 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