【问题标题】:TextAppearance property of TextView in AndroidAndroid中TextView的TextAppearance属性
【发布时间】:2014-06-16 06:17:28
【问题描述】:

我正在使用TextView 在屏幕上显示文本的android 应用程序。

我使用TextView的这个属性来设置android:textAppearance="?android:attr/textAppearanceMedium"的文本大小。

我还需要设置该文本的大小还是由 Android 操作系统自动管理?

提前致谢。

【问题讨论】:

  • 有一个默认值。如果你想改变它,那么是的,你需要输入代码。
  • @JeremyMiller 这是否意味着如果我使用android:textAppearance 并手动设置我的文本大小?
  • 试试看。为什么要加载浏览器、登录、输入一堆文本、提交、等待……而不是仅仅尝试——如果有问题就做所有这些?如果您已完成所有这些,请发布代码,以便有人可以提供有针对性的帮助。
  • @JeremyMiller 我从你的第一条评论中得到了答案,但我仍然怀疑我在这里问过stackoverflow.com/questions/24237616/…
  • @Williams 如果你想使用android:textAppearance="?android:attr/textAppearanceMedium",你不需要改变大小,android 在所有显示中都会注意这一点。

标签: android textview


【解决方案1】:

是的,调整大小是在后台自动完成的。

虽然使用android:textAppearance 之类的属性,但它直接使用 textSize 的预定义特定 sp 值:

android:textAppearance="?android:textAppearanceSmall" => 14sp

android:textAppearance="?android:textAppearanceMedium" => 18sp

android:textAppearance="?android:textAppearanceLarge" => 22sp

因此,它会根据 屏幕密度用户的偏好 自动调整值,从而在所有设备上看起来都相等,例如 dp 的公式价值观:

px = dp * (dpi/160)

类似的情况是仅用于字体的 sp 值,它使用相同的概念,唯一的区别是它可能会因用户在设置中设置的 fontSize 首选项而有所不同。

我没有使用过 :attr/ 类型,因为它可能会或可能不会被使用并用于相同的目的,因为系统资源工具知道在此上下文中需要属性资源,您不需要明确声明输入。

【讨论】:

    【解决方案2】:

    我是否还需要设置该文本的大小,或者它是否由 Android 操作系统自动管理?

    不,使用android:textAppearance="?android:attr/textAppearanceMedium 将使所有文本在不同设备上都变成中等大小。这意味着您在不同设备上的应用文本将具有相同的大小和重量。

    设置每个文本的大小需要计算才能达到相同的大小和重量。

    【讨论】:

    • 如果我使用 android:textAppearance="?android:attr/textAppearanceMedium ,你确定它对所有 android 密度都有相同的文本大小吗?
    • @Williams 是的.. 而不是设置文本大小.. 当您想为所有不同设备设置 txt 大小时,这里是一个代码。 textSize=因子*高度
    • 但我认为Android根据密度定义了不同的文本大小值android:textAppearance="?android:attr/textAppearanceMedium
    • @Williams 是的 dpi 值不同,但在不同设备上的效果/大小相同
    • 为什么有些平板电脑不支持全文本外观
    【解决方案3】:

    在 Android 文本元素中,有一个首先应用的默认值(类似于网页)。如果您希望覆盖这些并定义您自己的,那么您必须明确设置它们。 android:textAppearance 就是这样一种覆盖,但是您可以单独覆盖其他属性(而不是作为聚合)...您需要查看相关文档。

    【讨论】:

    • 我看到你仍然没有回答“这是否意味着如果我使用 android:textAppearance 并手动设置我的文本大小?”
    • 我不明白最后一个问题(这在 cmets 中)。你能简单演示一下吗?
    • 我的意思是如果我将 android:textAppearance 设置为 TextView 并使用 setText(15) 将文本大小也设置为相同的 TextView 那么这里使用属性 android:textAppearance 的任何用途?跨度>
    • 无论最后设置哪个,我相信都会覆盖之前的值。如果您打算覆盖,那么这样做只有一个“用途”。因此,例如,默认情况下文本为 24sp,然后在特定情况下您希望它为 36sp。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 2017-08-18
    相关资源
    最近更新 更多