【问题标题】:Android Material Design eliminates support for `android:textSize` everywhere?Android Material Design 消除了对“android:textSize”的支持?
【发布时间】:2021-05-29 09:58:04
【问题描述】:

Material Design 团队是否真的已经DONE AWAY,ALL 支持在EVERY 材料设计中设置android:textSize Android 组件,留给开发人员的只有残废的TextAppearance 样式覆盖,它只能设置字体样式,但不能设置大小?

订阅 Material Design 真的意味着失去几乎所有在整个应用中控制文本大小的能力吗?

无论materialThemeOverlay=""、textAppearance*="" 等有多少变化,我尝试设置,似乎材料设计组件从不公开文本大小,因此不仅为每个场合假设正确的文本大小(一个糟糕的主意确实),但实际上完全阻止了我做出自己的设计选择。

我是否遗漏了堆积如山的材料设计文档中的一些重要内容?还是仅仅尝试在 Android 应用程序中使用材料设计组件实际上会永久阻止您控制自己的文本大小?

【问题讨论】:

  • 我可以询问一个您认为应该具有 textSize 属性的组件的示例吗?我以前没有遇到过这个问题!
  • 芯片、菜单、工具栏、日期选择器、导航抽屉、Snackbars 等 - 基本上是任何渲染文本的 android 材料设计组件。

标签: android material-components-android


【解决方案1】:

首先,您是对的,有些组件没有专门使用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>

我的结果

【讨论】:

  • textAppearancenot 授予您使用材料组件访问文本大小的权限。您可以将 textAppearance 推荐给设置了 textSize 的样式 - 然后在可悲的恐惧中观看 textSize 被立即忽略。
  • @rmirabelle 我已经测试了Toolbar 和NavigationView 的文本外观,正如我在答案中提到的那样,文本大小按预期更改,我将使用我测试过的代码编辑我的答案。所以我不确定是否有其他东西干扰了您的测试?
  • 这很有帮助,谢谢。下次我遇到这个问题时,我会回来发布我自己的示例,这无疑会很快。
猜你喜欢
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2015-01-31
  • 2016-02-14
相关资源
最近更新 更多