'Material' 对比 'MaterialComponents'

'Material' vs 'MaterialComponents'

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

Theme.Material 由 Android 提供,从 API 21.
开始 Theme.MaterialComponents 由 Material 组件库提供。
他们是完全不同的。

如果你想使用 Material 组件库最好的方法是使用 MaterialAlertDialogBuilder.

return new MaterialAlertDialogBuilder(context, R.style.myTheme);

并从以下位置继承主题覆盖:

<style name="myTheme" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">

在这里您可以查看所有应用到主题的default attributes