【问题标题】:'Material' vs 'MaterialComponents'“材料”与“材料组件”
【发布时间】:2021-02-10 01:37:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2017-05-02
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      相关资源
      最近更新 更多