首先,您是对的,有些组件没有专门使用android:textSize 属性,但在大多数情况下,有一种方法可以更改文本大小。
我认为他们对新材料设计的想法是让您覆盖应用程序中的主题属性,而材料组件又使用这些属性来创建更具凝聚力的风格。您可以阅读更多关于如何使用他们制作的Theming Guide 执行此操作的信息。
但是你提到的大多数组件实际上都有一个我测试过的简单方法:
芯片
这实际上尊重android:textSize 属性,因为它是TextView 的后代。
工具栏
这些使用app:titleTextAppearance 属性,该属性可以使用android:textSize 指向样式。
导航视图
我认为“导航抽屉”是指导航抽屉中常用的NavigationView 组件。如果是这样,可以使用 app:itemTextAppearance 属性更改项目的文本大小,该属性再次可以指向带有 android:textSize 的样式。
关于 Snackbars 和 Date Pickers,您是对的,它们似乎不会在不覆盖主题属性或以编程方式更改主题属性的情况下公开它们的文本大小,这是一种解决方法。如果您认为需要这些功能,可以向 Material Components 团队提交功能请求。
编辑
这是我测试过的简单示例的一些结果以及用于重现它们的最少代码。
布局和样式定义
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:title="Toolbar"
app:titleTextAppearance="@style/BigText" />
<com.google.android.material.navigation.NavigationView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemTextAppearance="@style/BigText"
app:menu="@menu/test_menu" />
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Chip"
android:textSize="50sp" />
</LinearLayout>
<style name="BigText">
<item name="android:textSize">50sp</item>
</style>
我的结果